JQuery 1.7'den itibaren şunları kullanmalısınız jQuery.fn.on:
$(staticAncestors).on(eventName, dynamicChild, function() {});
Bundan önce , önerilen yaklaşım aşağıdakileri kullanmaktı live():
$(selector).live( eventName, function(){} );
Bununla birlikte, live()1.7 lehine on()kaldırılmış ve 1.9'da tamamen kaldırılmıştır. live()imza:
$(selector).live( eventName, function(){} );
... aşağıdaki on()imzayla değiştirilebilir :
$(document).on( eventName, selector, function(){} );
Örneğin, sayfanız dinamik olarak sınıf adıyla öğeler oluşturuyorsa dosomething, etkinliği zaten var olan bir üst öğeye bağlarsınız (buradaki sorunun özüdür, bağlanmak için var olan bir şeye ihtiyacınız vardır, dinamik içerik), bu olabilir (ve en kolay seçenek) document. Ancak akılda documenttutulması en etkili seçenek olmayabilir .
$(document).on('mouseover mouseout', '.dosomething', function(){
// what you want to happen when mouseover and mouseout
// occurs on elements that match '.dosomething'
});
Olayın bağlı olduğu sırada varolan herhangi bir üst öğe iyidir. Örneğin
$('.buttons').on('click', 'button', function(){
// do something here
});
için geçerli olurdu
<div class="buttons">
<!-- <button>s that are generated dynamically and added here -->
</div>