2012-04-29 15 views
2

は私がクラスsomeClassを持つ要素を作成するためのいくつかのjQueryを持っている上$(document).ready()自動的に新しい要素にイベントハンドラを割り当てる

$(".someClass").click(function(){ 
    //do something 
}); 

後に呼ばれているこのようないくつかのコードを持っていると言います。上記のクリックを自動的にアタッチするかどうか、または手動で再度アタッチする必要がありますか?

答えて

1

も新しい要素

$(".someClass").live('click', function(){ 
    //do something 
}); 

しかし、jQueryの1.7のようには廃止されたためにリッスンliveは、あります。代わりにonを使用することをお勧めします。

しかしonを使用するためには、あなたはハンドラをバインドしたい要素のコンテナを必要としています。もちろん、bodydocumentを使用することができますが、より具体的な要素を使用することをお勧めします

$(".someClassContainer").on('click', '.someClass' function(){ 
     //do something 
    }); 
+2

廃止されて、あなたは '.on()' – freshnode

+0

だけちょうどそう、まだロープを学んでjqueryの上で開始した、ありがとうを使用する必要があります。それは働くbtw :) +1 –

1

これを行うための2つの簡単な方法があります、最初はon()である:

$(".someClassParentElementPresentInTheDOMonDOMReady").on('click','.someClass', 
    function(){ 
     //do something 
    }); 

、他方はであり単に新しい要素の作成時点でクリックハンドラを割り当てます。私はあなたがそれをやっているのか分からないが、一例は以下の通りです:

$('#addElement').click(
    function(){ 
     var newElem = $('<div />',{'class' : 'someClass'}).click(function(){ 
      // do something }).appendTo('.someClassParentElementPresentInTheDOMonDOMReady'); 

参考文献:

3

はい。可能です。

$("body").on("click", ".someClass", function() { 
    // ... 
}); 
3

使用最新のjQueryのバージョンとon

$(document).on('click', '.someClass', function(e){ 
    //do something 
}); 

Liveが廃止されていますが、とにかく、それを使用することができます(推奨されません)。ライブ

$('.someClass').live('click', function(e){ 
    //do something 
});