1

HTML コンテンツを Web ページに動的にロードするために使用jQuery.loadする場合、ハンドラーを「再バインド」する最良の方法は何ですか?

通常、ハンドラーは でバインドしますjQuery.readyが、明らかに新しくロードされたコンテンツでは機能しません。これは、ロードされたコンテンツの外側と内側の両方で使用されるハンドラー用であるため、load成功関数でそれらをバインドするだけではあまり良くありません。

4

2 に答える 2

5

これらのハンドラーをサブスクライブする.onときは、まだ存在しない DOM 要素でもサブスクライブできる関数を使用できます。それらが追加されると、サブスクリプションが実行されます。この.on関数は jQuery 1.7 で導入されました。古いバージョンを使用している場合は、.delegate関数を使用して、jQuery 1.4.2 で導入されたのと同じ効果を得ることができます。さらに古いバージョンを使用している場合は、この.live方法を使用できます。

以下は、いくつかの要素 (既存または将来追加されるまだ存在しないもの) のクリック イベントをサブスクライブする方法の例です。

$('#someParentElement').on('click', '#someElement', function() {

});
于 2012-03-20T21:30:43.070 に答える
3

新しいコンテンツのイベントを静的な親要素に委任する必要があります。次に例を示します。

$("#myDiv").load(myUrl);

$("#myDiv").on('click', '#myElement', function() {
    // do stuff when #myElement (which was part of the HTML 
    // returned in the load() call) is clicked.
})

これは、jQuery 1.7 以降を使用していることを前提としています。そうでない場合は、次を使用しますdelegate()

$("#myDiv").delegate('#myElement', 'click', function() {
    // do stuff when #myElement (which was part of the HTML 
    // returned in the load() call) is clicked.
})
于 2012-03-20T21:31:46.930 に答える