Как стать автором
Обновить

Комментарии 63

Классно! Классно то, что проект очень быстро развивается. Классно, что ребята огромное внимание уделяют производительности и каждый новый релиз это подтверждает.
Но блин! Ребята, я не успеваю за вами ))))
PS: Пойду, change log почитаю.
Ребята, все круто, я понимаю, что здесь большинство Web-программистов, но вы реально собираетесь писать о каждом релизе jQuery?.. Давайте тогда анонсировать каждый новый выход C++ Boost, например…
Зарелизился jQuery — напиши на Хабре.
Если понимаешь, зачем чушь спрашиваешь?
А по-вашему такие релизы случаются каждый вторник? Весьма существенное обновление.
Так анонсируйте же. Или за вас это должны делать web-программисты?
Слушайте, это большой интересный релиз, изменения в котором скажутся на моей повседневной работе.
Как же об это не писать?
Двойственные чувства вызывают .on() и .off(). С одной стороны, унифицировать все и вся это очень JQuery way, а с другой стороны, когда видишь в коде
$('.hello').delegate('click', '.world', fn);
вместо
$('.hello .world').click(fn);
это дополнительный звоночек о том, что с этим самым '.world' может что-то оказаться «нечисто».
А они старые методы никуда не дели. Пока что .bind(), .delegate(), .live() остаются, но не рекомендуемы, а .click() и прочие т.п. сокращения так и останутся и далее — их никто отменять не собирается.
Так что замените в вашем примере .delegate() на .on() (даже список параметров менять не надо) и продолжайте подозревать «нечисто» :)
По присутствию селектора появится дополнительный звоночек что может что-то оказаться не чисто =)
Ещё если document в наборе — то тоже :)
Насколько я правильно помню метод .delegate(), в первом случае, если в селектор .hello после загрузки DOM вставить селектор .world и нажать на последний, то вызовется функция fn, во втором вашем случае, если внутри .hello вдруг появится .world и кто-то по нему кликнет, ничего не произойдет.
Да, все верно. Под «нечисто» я понимал как раз то, что '.world' это какой-то динамически появляющийся элемент
В чем разница между $('a').on('click', myHandler); и $(document).on('click', 'a', fn);?
Первое повесит хендлер единожды, второе будет кроме этого отслеживать появление
<a>
в DOM'e.
Собственно .live малость устарело еще до 1.7 и нужно было юзать .delegate вместо этого.
НЛО прилетело и опубликовало эту надпись здесь
У лайва клёвый обратный метод был — die.
> второе будет кроме этого отслеживать появление <a> в DOM'e.
Неверно. Никто не будет отслеживать никакого появления элементов. События в DOM всплывают на родительские элементы, поэтому document получит все клики, на каком бы элементе они не были. Следовательно, повесив один обработчик на document и проверяя event.target на соответствие селектору 'a', можно обрабатывать все события клика на этих элементах.
В одном из комментариев выше кто-то сравнил два варианта:
$('.hello').delegate('click', '.world', fn);
$('.hello .world').click(fn);
Безотносительно того комментария, из которого взят пример, задам свой вопрос. Правильно ли я понимаю, что:
1. в первой строке сначала будут найдены все элементы класса hello и на каждый из них будет повешен делегат, который будет отслеживать всплытие событий click от дочерних .world
2. во второй строке никаких делегатов нет, просто на все элементы удовлетворяющие селектору ".hello .world" будут повешены обработчики click.

Соответственно, строки не равнозначны. В первом случае, при динамической вставке нового .world элемента в один из ранее существовавших .hello, при клике на новый .world будет вызвана функция fn. Во втором случае, в аналогичном эксперименте, функция fn вызвана не будет.

Я правильно всё понял?
Правильно.
Второй вариант работает абсолютно так же, как метод .live(), а первый — как обычный .bind(). Если знаете подробности — то вот она разница, если нет — то я дал вам подсказку, куда копать.
Нужно уже включить jQuery в состав JS всеми браузерами изначально и оперативно обновлять его. :) Думаю, что jQ имеет большую популярность, чем MooTools, PrototypeJS, YUI, ExtJS итп. Даже яндекс юзает jQ.
А вас не смущает при этом, что jQuery для производительности удаляют код для обратной совместимости? Думаете по какой причине амазон до сих пор пользуется jQuery версии 1.2.6?
ИМХО, достаточно и самых ранних версий. Хватит хорошего селектора и бинда на события + .css, .val, .attr, .animate ну и fadeIn/Out, slideDown/Up/Toggle анимаций. Большего и не нужно. :)
1. «хорошего селектора» — document.querySelector, .querySelectorAll
2. «бинда на события» — есть Function.prototype.bind

А всё остальное весьма спорно. Как минимум будет 10 точек зрения относительно синтаксиса.
А windows и x86 делали обратное. Очень совместимо, но сегодняшний офис грузится дольше чем хп или 1997 версия в соответствующих годах. Если учесть закон Мура, то становится страшно за то что они там воротят в потрохах системы.
Скорее по причине оттестированности амазоном именно этой версии кода. Обновлять библиотеку и тестировать весь js на совместимость с новой версией — это дорого.
угу я тоже недавно обновился с 1.2.6.

  $('#something').css('borderWidth',10);
  var a = $('#something').css('borderWidth');


Угадайте чему равно a в 1.2.6 и в более поздних релизах.
Лишние 80Кб иногда не особо хорошо кладутся в высоконагруженные сервера.
Если я не ошибаюсь, то jQuery уж можно точно положить в кэш. Со стороны nginx'а или(и) со стороны браузера. Физически посылать заголовки о кэшировании. Не слышал ни разу, что высоконагруженные сервера — это минимум css, js файлов… Простите, но ИМХО — бред.
Посмотрите сорцы www.ya.ru, например.
НЛО прилетело и опубликовало эту надпись здесь
Что я там могу нового увидеть?
Даже яндекс юзает jQ.

Когда я это писал выше — это я и имел ввиду.
Теоретически jQuery можно пересобрать, выкинув лишнее. Об этом говорил Paul Irish.
Теоретически — да, на практике же форкать такую махину (да и любую либу) окажется себе дороже.
Да не то чтоб и махина. Я в своё время именно прочитав его исходники изучил яваскрипт и влюбился в него. Другое дело Ext.js.
У меня тоже часто возникают мысли о такой конструкции
<script type="text/javascript" src="jq.js" commonly-used-library="jquery;version=1.7"></script>
<script type="text/javascript" src="less.js" commonly-used-library="less;version=1.1.3"></script>
Кто-нибудь может сравнить (или видел внятное сравнение в интернете) jQuery и YUI 3.x?
С такой скоростью выхода новых версий, после ознакомления со спецификацией и внедрения всех возможностей в проекте понимаешь, что уже снова требуется ознакамливаться с новой спецификацией и заниматься внедрением новой версии в проекте. Никто конечно не заставляет поддерживать в своем проекте актуальную версию, но тем не менее, при желании так делать, ситуация получается забавная.
НЛО прилетело и опубликовало эту надпись здесь
Еще порадовало, что документацию обновили. Особенно довабили jQuery UI в общую документацию.
Очень порадовала модульность. Только еще-бы пример, как jQuery в качестве модуля к requireJS запустить, скажем.
Жаль также не упомянули про темплейты. Они хоть в бете, но все равно интересно.
Как лучше всего изучить jQuery?
я имею в виду не примеры по созданию слайдеров и менюшек, а подробное рассмотрение всех функций. Книги тоже быстро устаревают, появляются новые методы, старые становятся запрещенными. Что делать?
насколько я заметил там не пишут о том, какие методы лучше использовать, не раскрываются основы работы. Конкретно методы и функции и их использование.
Конкретно методы и функции и их использование.

Там и есть именно методы, функции и их использование.

Или вы про работу самого jQuery?
НЛО прилетело и опубликовало эту надпись здесь
я про книги и говорю, описанные в них методы работы уже не актуальны к выходу книги в свет
НЛО прилетело и опубликовало эту надпись здесь
спасибо
А вообще, конечно, смотря как ставить вопрос: «Как с этой хренью работать» или «Как эта хрень работает». Ключ к ответу на первый вопрос — в опыте и исследовании документации применительно к конкретной задаче (копать в воздух и писать хэллоуволды занятие скучное и малопознавательное). А второй вопрос решается изучением исходников.
Попробуйте начать писать на jQuery чтобы изучить его
вопреки расхожему мнению я не считаю, что писать на языке (а jquery я не считаю библиотекой, его можно назвать уже полноценным языком) нужно сразу, не понимая принципов работы.
Конечно не нужно, но принципы работы понимаются действительно из домунтации, а опыт использования jQuery API (тонкости и подводные камни) понимаются только при использовании.

А еще я категорически несогласен с утверждением, что jQuery это больше чем библиотека. Это именно библиотека, и если вы плохо знакомы с JavaScript, то врят ли по-настоящему поймете как она работает и что происходит внутри.

Мне вот недавно коллега показывал неработающий код на JS (с использование jQuery), и сказал «наверное тут проблема в том, что когда jQuery парсит код ...». Коллега отнюдь не глупый человек и хороший программист в других языках программирования.
да, пожалуй, вы правы
Меня смущают ваши 70% знания jQuery из резюме.
благодарю
НЛО прилетело и опубликовало эту надпись здесь
Мой лозунгомер зашкалило.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории