1

そのため、まだ存在していないコンテキストに対してjqueryの選択を定義する機能が何度も必要になりました。私がやりたいのは、jqueryチェーンを構築し、将来のコンテキストでそれらを実行することです。

何かのようなもの

var $future = $.future().find('.stuff').each(function(v) {
    // do stuff
}).on('click', function(e) {
    // stuff
}).hide();

そして将来どこかでできるようになる

$future(ctx);

したがって、これをイベントハンドラーなどに渡すことができます。

$.bindこれは、jqueryの選択をまだ存在しない要素にバインドし、存在するときに発生させることができるため、非常に便利です。

クラスshowmeを取得するときに要素を表示します。

$.bind('.showme', $.future().show());

頭に浮かぶ最後の使用法は、同期コードで物事を非同期にしようとするときです。そのため、要素が存在する場合は、先に進んでそれを呼び出すことができますが、呼び出し元のコードは、実際のコンテキストがまだないことを知る必要はありません。

これは存在しますか?そうでなければ、この能力を必要としているのは私だけですか?それが存在せず、私が宇宙に一人ではない場合、多分私は刺すでしょう。

4

3 に答える 3

3

すでに実装されています。私はこれがあなたが探しているものだと思います-https ://github.com/furf/jquery-future

于 2013-01-29T15:25:03.563 に答える
1

あなたはそれをする必要はありません。jQuery には、DOM にまだ存在しない要素のイベントの処理をサポートするためのイベント委任が既にあります。

従来のイベント バインディングは通常、次のようなものです。

$(...selector...).on('click', doSomething);

これは、「選択した要素のいずれかがクリックされたときに、何かを行う」と簡単に読み取れます。

jQuery にはイベント委任フォームがあります。

$(...selector...).on('click', ...sub-selection..., doSomething);

イベント委任形式では、イベントは実際には で一致する要素にバインドされますが、一致する子要素のいずれかがクリックされた...selector...ときにのみトリガーされます。...sub-selection...イベントがトリガーされるとチェックが行われるため、セレクターに一致する新しい要素もdoSomething関数をトリガーします。

于 2013-01-29T14:46:24.817 に答える
0

このような関数を作成できます

function doStuffLater(e){
 $(body).on(e,".stuff",function(){
   $(this).each(function(v){ /*do stuff*/ }).hide();
 });
}

後で doStuffLater(ctx); を呼び出すことができます。

于 2013-01-29T14:47:48.490 に答える