2011-11-06 15 views
21

jQuery 1.7'ün .on() ve .off() yöntemlerinin .live() ve benzeriyle değiştirilmesi gerekir. jQuery 1.7 dinamik elemanlar için() ve kapalı() yöntemleri

Ben dinamik öğe ile denedim: Bu DOM yüklendikten sonra eklenen elemanlar benim için çalışmıyor

$(".myList").on('click', function(e){ 
    alert('hello world'); 
}); 

.

Kod, jQuery 1.7'ün .on() ve .off() yöntemlerinin geçerli bir örneğinin üzerinde mi?

cevap

33

Canlı() -> on/off() (ve diğer) örnekleri için bkz http://blog.jquery.com/2011/11/03/jquery-1-7-released/.

Bu üzerinde canlı dönüştürmek için onların örnektir:

$('a').live('click', fn); 
$(document).on('click', 'a', fn); 

Yani örnek hale gelir:

http://jsfiddle.net/zzSjK/

<script type="text/javascript"> 
    $(function(){ 
     $(document).on('click','.clickme' , function(e){ 
      addtext() 
     }); 
     function addtext() { 
      $('.myList').append('<div class="clickme">click me</div>') 
     } 
    }) 
</script> 

<div class="myList"> 
    <div class="clickme">-click-</div> 
</div> 
: Burada
$(document).on('click', '.myList', function(e){ 
    alert('hello world'); 
}); 
+4

Something olsa gerçekleştirmek. on(), vücuda eklenen dinamik olarak oluşturulmuş öğelerle çalışmaz VE negatif bir z dizinine sahip. Hangi nedenle olursa olsun, tıklama asla vücut içeren öğeyi geçmez. Gövde etiketi tüm tıklamaları yakalamaya devam edecek. Vücudu DOM'a eklenen elemandan daha düşük bir z-endeksi yaparsanız bile. HOWEVER(),() yapamaz olsa bile bu negatif endeksli öğeleri hedefleme gücüne sahiptir. – Alex

+1

@Alex Neden negatif z-endeksli öğeleri dinamik olarak oluşturmanız gerekiyor? – Omu

+1

ve en önemlisi jQuery sürüm 1.9.0 sürümünden - live() yöntemi artık mevcut değil. –

2
$(document).on('click','.myDiv',function(){ ... }); 

Ve ile "keserek": ile"Bind"

$(document).off('click','.myDiv'); 
+0

kazadan düşürüldü. afedersiniz :( –

İlgili konular