Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.10.2015, 01:38
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

$ или jQuery
Здравствуйте.
В чем разница между $() и jQuery() ??
В одних местах работает одно, в других другое (модули на сайт joomla, например)

И еще такой вопрос. Выбираю элементы и вывожу что получилось
var	sections = $('#part1, #part2');
    for(k in sections) { 
        str += k+": "+ sections[k]+"\r\n"; 
    } 
    alert(str);

и мне выводит
Код:
0: [object HTMLDivElement]
1: [object HTMLDivElement]
length: 2
prevObject: [object Object]
context: [object HTMLDocument]
selector: #part1, #part2
jquery: 1.11.3
constructor: function(a,b){return new m.fn.init(a,b)}
toArray: function(){return d.call(this)}
get: function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)}
pushStack: function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b}
each: function(a,b){return m.each(this,a,b)}
map: function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))}
slice: function(){return this.pushStack(d.apply(this,arguments))}
first: function(){return this.eq(0)}
last: function(){return this.eq(-1)}
eq: function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])}
end: function(){return this.prevObject||this.constructor(null)}
push: function push() { [native code] }
sort: function sort() { [native code] }
...
куча других данных
это нормально? Мне бы только элементы что я указал... потому что потом, когда я хочу обратиться к выборке, мне эти length prevObject и берутся как элементы тоже. то есть, например
for (pos in sections){
jQuery('#info-'+pos).text('pos');
}

мне выводит не 0 1 2... в элементах #info-0 #info-1 #info-2 и тд...
а ищет #info-length #info-prevObject и тд..
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2015, 01:48
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

ShutTap, про основы jQuery прочитай.
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2015, 02:07
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

по первому - одно и тоже, просто у меня где то $ уже используется другой библиотекой, а jQuery не конфликтует?

По второму не нашел что-то... Или это нормально, и мне надо использовать .each?
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2015, 02:35
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Сообщение от ShutTap
jQuery не конфликтует?
Конфликтует, но есть https://api.jquery.com/jquery.noconflict/

Сообщение от ShutTap
Или это нормально, и мне надо использовать .each
Он и нужен для перебора.
Ответить с цитированием
  #5 (permalink)  
Старый 15.10.2015, 12:28
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

ага, так только элементы что нужны берет. спасибо)

но тогда такой вопрос.
мне нужно определить, какой из элементов сейчас показывается на странице. Видимым считаю элемент, который проходит через середину экрана. на скролл вешаю обработчик:

var screenH = jQuery(document).height();
var top = jQuery(window).scrollTop();
var pos;

sections.each(function(pos, element) {

objTop = jQuery(element).offset().top;
objHeight = jQuery(element).outerHeight(true);

if (objTop < top + screenH/2 && top + screenH/2 < objTop + objHeight){
//break;
}
	
});

jQuery('info').text((pos)+' '+objTop+' '+(top+screenH/2)+' '+(objTop+objHeight)+' '+top);


то есть перебираем нужные элементы при скролле, и если у кого-то попадает через середину - прерываем цикл, и индекс будет указывать на тот элемент, на котором остановились, который через середину проходит.
в блок info вывожу информацию для размеров. pos - undefined. Почему? Вроде объявил переменную за циклом.
И break не работает, хотя вроде читал, должно как в обычном цикле работать, а в итоге весь код не работает. Как прервать тогда перебор цикла?
Ответить с цитированием
  #6 (permalink)  
Старый 15.10.2015, 12:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

ShutTap,
надо не цикл прерывать, что в данном случае невозможно, а данные сохранять, где изменение внешнего pos?
var screenH = jQuery(document).height();
var top = jQuery(window).scrollTop();
var pos;

sections.each(function(index, element) {

objTop = jQuery(element).offset().top;
objHeight = jQuery(element).outerHeight(true);

if (objTop < top + screenH/2 && top + screenH/2 < objTop + objHeight){
      pos = index
}

});

jQuery('info').text((pos)+' '+objTop+' '+(top+screenH/2)+' '+(objTop+objHeight)+' '+top);

Последний раз редактировалось рони, 15.10.2015 в 12:45.
Ответить с цитированием
  #7 (permalink)  
Старый 15.10.2015, 12:56
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

аа, break не работает все-таки... в инете писали, что как в обычном цикле. понятно, спасибо)

и такой теперь косяк. длина sections на данный момент 4 (проверяю size())
то есть, индексы должны же быть 0 1 2 3 так?
а у меня 1 2 3 undefined... От чего такое может быть (на странице точно все 4 есть элемента)
Ответить с цитированием
  #8 (permalink)  
Старый 15.10.2015, 13:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от ShutTap
break не работает все-таки
работает функция в строке 5 закончит обработку, сам перебор продолжится дальше.
нужен макет минимальный, ничего лишнего 4 ваших блока + info + скрипты и css
Ответить с цитированием
  #9 (permalink)  
Старый 15.10.2015, 15:45
Аспирант
Отправить личное сообщение для ShutTap Посмотреть профиль Найти все сообщения от ShutTap
 
Регистрация: 12.11.2012
Сообщений: 70

нашел ошибку... вместо
var screenH = jQuery(document).height();

надо было
var screenH = jQuery(window).height();


из-за этого неправильно отрабатывало условие и элемент съезжал
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стоит ли изучать нативный js? Или JQuery проще? EmperioAf Оффтопик 37 06.06.2017 23:16
Кастомный селект, чекбокс, радио vostok Ваши сайты и скрипты 0 12.08.2013 00:33
Плавный Скроллинг дока: JS vs Jquery vs Jquery + Плагины SegaMega Events/DOM/Window 1 27.12.2012 15:02
jQuery - объект или функция? jazzz13 jQuery 8 16.08.2011 04:01
Каскадный список + jquery 1.4.2 bobo123456 jQuery 0 02.04.2010 21:59