0

jQuery ライブ検索プラグインを使用しており、クラスのすべてのインスタンスにバインドする必要があります。クラス インスタンスは、動的である場合とそうでない場合があります。

jQuery Live関数EG内にネストすることで、動的クラスインスタンスへのバインドを達成できることを私は知っています$(".myLink").live(click function(){});

ただし、非動的クラスにもバインディングが必要です。

liveSearch バインディングを 2 回定義せずにこれを達成するにはどうすればよいですか? (静的要素の準備が整ったドキュメントで 1 回、動的要素のクリック ハンドラーで 1 回)。

これが私のliveSearchコードです。それが重要かどうかはわかりません。

$(".myClass").liveSearch({
url: 'foo.php',
id: 'liveSearchID',
parent: '.myParent',
});

どうもありがとう。

4

1 に答える 1

2

jQuery を使用して、 次のような現在 (非動的) または将来の要素 .on()にバインドできます。liveSearch

$("#parentContainer").on("click", ".myClass", function(){
  $(this).liveSearch({
     // options
  }); // liveSearch
}); // on

セレクターの親コンテナーに適用.on()してから、イベントを子孫セレクターおよびハンドラーとして渡す必要があることに注意してください。.myClass.myClass

デモを見る

.on()jQuery 1.7 以降が必要

編集(2012 年 12 月 15 日 - 午後 4 時 13 分 PT):

古いバージョンの jQuery のユーザーは... よりも.delegate()優先して使用する必要がある.live()ため、コードを次のように微調整します.delegate(selector, eventType, handler)(引き続き.delegate()親コンテナーに適用します)。

$("#parentContainer").delegate(".myClass", "click", function() {
  $(this).liveSearch({
     // options
  }); // liveSearch
}); // delegate

を使用して新しいデモ.delegate()を参照してください(jQuery v1.4.2+ が必要)

于 2012-12-15T03:28:52.210 に答える