12

私の知る限り、click()クリックしている要素がページの読み込み時に存在しないため (DOM 対応)、この方法は機能しません。

を使用することを提案する多くの回答を見つけました.live('click',function(){...})。これはうまくいきます!

ただし、.live()jQuery 1.7 では減価償却されています

そのため、代わりに使用してみまし.on('click',function(){...})たが、機能しません ( と同じように動作し.click()ます .

理由、または(which works).on()と同様に使用するために私ができることを誰かが知っていますか?.live()

4

2 に答える 2

32

は と の両方をon()置き換えるため、イベント委任を利用するには (つまり、古い のように機能させるには) 3 番目のパラメーターを渡す必要があります。bind()live()live()

$('#container').on('click', '.element', function(){ });
于 2013-02-26T15:13:52.597 に答える
10

次のような形式を使用できるはずです。

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

elementクリック イベントをバインドする要素はどこにありますか。理想的には、動的に読み込まれる要素に DOM 階層内で近い、DOM が読み込まれるときに存在する要素を使用したいため、使用documentは一種の最悪のシナリオです。

jQuery .on()ドキュメントから:

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが .on() を呼び出す時点でページに存在している必要があります。要素が存在し、選択できることを確認するには、ページの HTML マークアップにある要素のドキュメント対応ハンドラー内でイベント バインディングを実行します。新しい HTML がページに挿入されている場合は、要素を選択し、新しい HTML がページに配置された後にイベント ハンドラーを添付します。

于 2013-02-26T15:14:29.163 に答える