Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Live() on() обработчик (https://javascript.ru/forum/jquery/46689-live-obrabotchik.html)

Art!P 19.04.2014 16:43

Live() on() обработчик
 
Для сайта прикрутил jQuery версии 1.11, обнаружил сюрпризы.
.live() теперь нет в версиях старше 1.9 (даже не представляю себе ту парадигму, при которой создатели решили выпилить лайв из библиотеки. Зачем?)

Вместо этого используется .on() с более сложным синтаксисом.
Вопрос у меня возник по поводу обработчика событий.
Собрал пример http://jsfiddle.net/Xjbw9/
Событие установил на 'html' в документации есть примеры с объектом document. Но пример работает.

На что правильнее ставить обработчик .on() чтобы поведение было таким же предсказуемым как live?

Sweet 19.04.2014 17:09

Цитата:

Сообщение от Art!P
даже не представляю себе ту парадигму, при которой создатели решили выпилить лайв

Вообще, эта так называемая "парадигма" - былинный фейл. Есть, конечно, места, где этот паттерн уместен, но нужно понимать, что делаешь. Но jQ-программист по определению не понимает: он херачит и радуется, что работет, не вникая, что да как. В чём фейл? jQ - это api для создания несистемного кода. Просто разрозненных кусочков. Никакой архитектуры. Зато порог вхождения - нулевой. Я слышал, что в интернате для имбицильных детей ввели программу: дети пишут jQ-плагины и выкладывают это на гитХаб. В свете их умственных проблем, они совершенно не осознают, что делают, зато весело хломают в ладоши и, пуская слюни, смеются.
Цитата:

Сообщение от Art!P
Зачем?

Наверное, чтобы был один метод, а не куча: delegate, bind, live.
Цитата:

Сообщение от Art!P
На что правильнее ставить обработчик .on() чтобы поведение было таким же предсказуемым как live?

Думаю, что .live вешался на document.

рони 19.04.2014 17:27

Цитата:

Сообщение от Art!P
На что правильнее ставить обработчик .on() чтобы поведение было таким же предсказуемым как live?

на элемент который будет содержать вновь созданные элементы - у вас это $('#form')

Art!P 19.04.2014 17:37

Спасибо, думаю то же.

Это конечно, очень здорово что jQuery не стоит на месте и развивается. Но книги по нему быстро становятся очень не актуальными. У меня книга есть Б.Бибо и И.Кац которая написана про 1.4, когда читал уже тогда заметил разницу между 1.4 и 1.6. Можно висеть на старых версиях, это не запрещается. Интуиция подсказывает, что новые версии выходят с непроста и вероятно в них есть важные исправления (правда не слежу за проектом).
И не приятно, и нужно время на эти нюансы, а хочется новья.

Art!P 19.04.2014 18:05

Цитата:

Сообщение от рони (Сообщение 308408)
на элемент который будет содержать вновь созданные элементы - у вас это $('#form')

Это логично. А если добавляемый код, динамически передвигается по дереву (DOM)? То лучший предок объект document?

PS. Когда был лайв об этом даже не задумывался, лайв ставил обработчик на пока не существующий селектор где-бы он не был в дереве документа. Раньше было лучше! И мороженое вкуснее и трава зеленее.

рони 19.04.2014 18:09

Art!P,
да

Art!P 19.04.2014 18:21

Спасибо


Часовой пояс GMT +3, время: 21:03.