1

私はjQuery プラグインを作成しましたが、最近、コールバックがthis元のセレクターである にアクセスできるように作成したので、次のことができます...

$('#something').waitForImages(function() {
   $(this).fadeIn(500);
});

これは、jQuery API で期待されるいくつかのコードに非常によく似ています。

ただし、jQuery は常にネイティブ DOM 要素として提供されるため、 jQuery のメソッドを呼び出し始めるthisには、それを でラップする必要があります。$()

元々this 、 jQueryオブジェクトとして提供していました。しかし、その後、jQuery の の処理を​​観察した後、this変更しました

最善の方法は何ですか?ラッピングして提供するには?

4

4 に答える 4

6

これはイベント ハンドラーのように見えるため、この状況ではラップしないままにしておきます。ほとんどの場合、イベント ハンドラー( jQueryおよび生の JS イベント ハンドラー) では、処理しているDOM 要素であることが期待thisされます。これは、私が固執する規則です。

一般的に、可能な限り、最小の驚きの原則に従ってください。

必要に応じて、ラップされた要素をパラメーターとして関数に渡すこともできます。次に例を示します。

$('#something').waitForImages(function(e, jQueryObjectHere) {
   $(this).fadeIn(500);
});

...そうすれば、予期せぬことをしているわけではありませんが、必要に応じてグッズを提供できます。これが必要だとは決して言いませんが、便利です。上記は単なるオプションです (本当にランダムに考えました)...ただし、このイベントをできることとして公開した場合は.bind()、これを行わないでください。追加のデータをバインドし、それを期待している可能性があるためです。

于 2011-03-25T02:29:40.460 に答える
0

thisjQuery 関数によって返された、選択された要素の配列を参照します。要素を再ラップする必要はほとんどありません。

于 2011-03-25T02:22:35.340 に答える