Единственное отличие, на которое люди натыкаются при переходе от .live()
к .on()
, заключается в том, что параметры для .on()
немного отличаются при привязке событий к элементам, динамически добавляемым в DOM.
Вот пример синтаксиса, который мы использовали для метода .live()
:
$('button').live('click', doSomething);
function doSomething() {
// do something
}
Теперь, когда .live()
устарел в jQuery версии 1.7 и удален в версии 1.9, вы должны использовать метод .on()
. Вот эквивалентный пример с использованием метода .on()
:
$(document).on('click', 'button', doSomething);
function doSomething() {
// do something
}
Обратите внимание, что мы звоним .on()
против документа, а не самой кнопки . Мы указываем селектор для элемента, события которого мы слушаем, во втором параметре.
В приведенном выше примере я звоню .on()
в документе, однако вы получите лучшую производительность, если будете использовать элемент ближе к селектору. Любой элемент-предок будет работать до тех пор, пока он существует на странице, прежде чем вы вызовете .on()
.
Это объясняется здесь, в документации , но его довольно легко пропустить.