2011-11-06 6 views
21

jQuery 1.7の.on()および.off()メソッドは、.live()などと置き換えられます。動的要素のjQuery 1.7 on()およびoff()メソッド

私は、動的項目でそれを試してみました:

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

これは、DOMがロードされた後、追加された要素のために私のために働いていません。

上記のコードはjQuery 1.7の.on().off()メソッドの有効な例ですか?

答えて

33

live() - > on/off()(およびその他)の例については、http://blog.jquery.com/2011/11/03/jquery-1-7-released/を参照してください。

これは、上に生きて変換するためのその一例です:

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

だからあなたの例では、に次のようになります。ここでは

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

しかし実現する何か。 on()は、本文に追加され、負のz-インデックスを持つ動的に作成された要素では機能しません。何らかの理由で、クリックは決してエレメントを含むボディを通過しません。 bodyタグはすべてのクリックを捕捉し続けます。本文にDOMに追加される要素よりも低いZ-インデックスを作成したとしても。どのようにlive()はon()ができないにもかかわらず、これらのネガティブインデックスアイテムをターゲットにする権限を持ちます。 – Alex

+1

@Alexなぜ、負のZ-インデックスを持つ要素を動的に作成する必要がありますか? – Omu

+1

、最も重要なのはjQueryバージョン1.9.0です。live()メソッドはもう使用できません。 –

4

は少し例を次に示します。

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> 
2

"バインド" と:

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

そして "アンバインド" で:

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

は事故によりdownvoted。ごめんなさい :( –

関連する問題