Pull to refresh

live: новый способ задать обработчик события

Reading time2 min
Views2.3K
imageКак известно, недавно вышла бета версия jQuery 1.3. Пока она сырая, тестируется, и в ней еще есть неприятные баги. Но знакомится с нововведениями стоит и я хотел бы кратко рассказать об одном из них.

Функция «live» представляет собой аналог функции bind, по синтаксису и сути они идентичны, но между ними есть одно огромное различие, которое лучше всего демонcтрирует следующий пример.

Попробовать демо. Пояснения под катом.


В примере два набора кнопок, нажатие первых обрабатывается функцией назначенной через bind, вторых — через live.
При динамическом добавлении кнопок мы можем наблюдать основное отличие: в первом наборе новые кнопки не получают обработчика, во втором обработчик автоматически добавляется для каждой новой кнопки.

И хотя отличия в коде невелики:
      $("input.test").bind("click", function() {
        alert("hello base input!");
      });
      $('input.lcmd').live("click", function() {
        alert("hello live input!");
      });

* This source code was highlighted with Source Code Highlighter.

по факту мы имеем огромную разницу.

PS: ранее подобный функционал можно было получить через этот плагин.

PPS: во время тестирования столкнулся с багом, который показывает насколько 1.3 еще сыра:
если указать сложный селектор $('#lblock input.lcmd').live(..., то обработчик не навесится вообще, причем, при замене на bind все работает прекрасно. Ждем исправлений в следующих версиях.

PPPS: а вот $('input.lcmd', $('#lblock')).live(… работает, что, в общем, не удивительно
Tags:
Hubs:
Total votes 53: ↑53 and ↓0+53
Comments26

Articles