Станом на jQuery 1.7 слід використовувати jQuery.fn.on:
$(staticAncestors).on(eventName, dynamicChild, function() {});
До цього рекомендованим підходом було використання live():
$(selector).live( eventName, function(){} );
Однак live()був on()знятий у 1,7 на користь та повністю вилучений у 1,9. live()підпис:
$(selector).live( eventName, function(){} );
... може бути замінено таким on()підписом:
$(document).on( eventName, selector, function(){} );
Наприклад, якщо ваша сторінка динамічно створювала елементи з назвою класу, dosomethingви пов'язуєте подію з батьком, який вже існує (це суть проблеми, тут вам потрібно щось, що існує для прив’язки, не прив'язуйте до цього динамічний контент), це може бути (і найпростіший варіант) document. Хоча мати на увазі, documentможливо, це не найефективніший варіант .
$(document).on('mouseover mouseout', '.dosomething', function(){
// what you want to happen when mouseover and mouseout
// occurs on elements that match '.dosomething'
});
Будь-який батько, який існує на момент прив'язки події, є добре. Наприклад
$('.buttons').on('click', 'button', function(){
// do something here
});
застосовуватиметься до
<div class="buttons">
<!-- <button>s that are generated dynamically and added here -->
</div>