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 document
tutulması 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>