Pull to refresh

Comments 38

Вот примерно с таким селектором у меня возникли проблемы:
$('ul.one li:step(3)').css('clear','left');


В таком виде оно работает, не понял в чём у вас возникла проблема?
Каюсь, в оригинале есть еще пару абзацев про эту проблему, но я не до конца понял смысл.
Да проверил — все работает правильно.
Проблема не в том как работает, а в том как выбираются селекторы. jQquery очень оптимизирован в этом отношении и при любом удобном случае использует нативные функции браузера для более быстрой выборки (getElementById к примеру). Но в случае с классами, как я понял, используется рекурсивная выбрка (возможно я не правильно понял), или как-то так. И это, судя по всему является не очень оптимальным с использованием «кастомных» селекторов.

Может кто-то расскажет подробнее об особенностях обхода DOM в jquery в различных условиях?

UFO just landed and posted this here
$('div:eq(N)'); // выбираем div идущим под номером N в DOMe
$('div:gt(N)'); // выбираем div'ы, индекс которых больше чем N в DOMe
$('div:lt(N)'); // выбираем div'ы, индекс которых меньше чем N в DOMe

Не? или я не так понял смысл поста?
не поняли. Нужно выбрать, все числа, делящиеся на 4, к примеру. Вы предлагаете писать как:
$('div:eq(N)');
Черт, отправилось раньше времени.
Вы предлагаете писать как:
$('div:eq(4)');
$('div:eq(8)');
$('div:eq(12)');

???
все понял. спасибо.
<=∞; i++) document.write(«я буду юзать предпросмотр»);
В конце поста есть ссылка на раздел API — где задача поставленная автором решается встроенными средствами jQuery.
И также в конце поста есть ответ автора на вопрос: зачем огород городить в этом случае.
Впрочем он и в самом начале пишет, что это статья — обучающий пример.
Ну, каждый N-й элемент можно выбирать при помощи nth-child: $('li:nth-child(3n)') — каждый третий. Каждый третий, начиная с пятого: $('li:nth-child(3n+5)')
об этом написано в конце статьи.
Только это не «простой селектор в jQuery», это полная реализация css3 селекторов в Sizzle :)
что за привычка использовать в JS $i, $n и т.д.? Я понимаю что работает, но зачем, если это изначально неправильно…
Лично я использую $ для отличия jQuery объектов от чистого JS:

var i = 0;
var $element = $('.red');
В этом нет ничего не правильного. Может неудобно, непонятно, непривычно (сам не одобряю), но неправильным это никак не назвать. Конвенции != правила.
Это не может быть неправильным. Кто сказал что это неправильно? Все относительно в этом мире. Для кого-то стакан на половину пуст, а для кого-то на половину полон…
Ну что за бред, это-то тут причём :-D
Я встретил эту рекомендацию в книге по jquery 1.3. Советуют использовать, когда переменная представляет объект jquery. Вероятно, в других книгах эта рекомендация тоже есть.
Думаю можно к статье-оригиналу добавить (прим. пер. :)), что jQuery использует в качестве движка селекторов Sizzlejs
Для этого есть отличный css3 :nth-child.
Можно выбрать каждый третий исключительно css-сом вот так:

$('li:nth-child(3n)');
можно конечно и вашим способом применять, но есть довольно интересный плагин
selectivizr.com/
Очень много функционала добавляется для любимых ишаков. Облегчает процесс верстки
как я видел, селективизер это не совсем то… это добавка css3 селекторов к интернет експлореру, там где они не поддерживаются. но они не поддерживаются только в css.
если использовать их в селекторе js, то они будут работать на ура
Странная статья — автор пишет свой велосипедный селектор взамен того, что уже существует в CSS и Jquery, называет переменные со знака доллара, потом использует для проверки на шаг строку

( ($index-$start) / $step ) == Math.floor( ( ($index-$start) / $step ) ).

Правильнее и проще было бы написать

(index - start) % step == 0

Что-то как-то не верится, что он, согласно сайту-источнику, «Long time web professional with huge experience in all types of front-end work».
а я считаю что автор топика все равно сделал работу правильно. может он и изобрел велосипед, но он смог показать как легко его изобретать и собрать!
Тогда нужны комментарии к исходному коду и пояснения:
  • что такое Jquery.expr[':']
  • что означают параметры node, index, meta
  • что должно быть возвращено и почему там такая адская формула
А я считаю, что надо кастрировать тех, кто использует именование $var для обычных переменных.
По общепринятым стандартам переменные начинающиеся с $ означают коллекцию элементов jQuery, а без него соответственно всё остальное.
Спасибо за пояснение, буду знать.
Вся статья о том как сделать хуже то что уже давно существует.
Вот как надо заменить велосипедный селектор:
$('li.step(a,b)') -> $('li.nth-child(an+b)')

точки надо заменить на двоеточие :)
UFO just landed and posted this here
Sign up to leave a comment.

Articles