Начиная с jQuery 1.7 вы должны использовать jQuery.fn.on
:
$(staticAncestors).on(eventName, dynamicChild, function() {});
До этого рекомендуемый подход заключался в использовании live()
:
$(selector).live( eventName, function(){} );
Тем не менее, live()
был признан устаревшим в 1.7 в пользу on()
, и полностью удален в 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>