0

これに対する簡単な解決策があるかどうか疑問に思っています: グリッドで定義された要素で次の JQuery プラグインを数回作成しました。

(function ($) {
    $.fn.MyPlugin = function () {

        $(this).mouseenter(function () {
           //do something for single plugin instance
        });
    };

})(jQuery);

ただし、マウス入力機能をトリガーしているプラ​​グイン インスタンスを一意に識別するにはどうすればよいでしょうか。現在のセットアップでは、すべてのインスタンスを参照していますが、一度に 1 つのインスタンスに対してのみ mouseenter をトリガーしたいと考えています。

プラグインは次のように作成されます。

$(".someClass").MyPlugin(); 
4

2 に答える 2

2

プラグインを何度も作成する必要がないため、プラグインと呼ばれます。好きな場所に差し込むだけです。プラグインのコーディングを開始する方法については、jquery プラグインのオーサリング ページをご覧ください。いくつかの素敵なテンプレートを提供します。

はすでに jQuery オブジェクトであるため、コード$(this)は冗長です。this次に、return thisプラグインでチェーン可能性を常に維持する必要があります。$(this)イベント内で使用mousenterして、DOM でプラグインによって処理されている現在の要素を参照できます。

return this.each()場合によっては、各要素をループして何かを実行することも役立ちます。この場合、イベントを添付しているため、イベントはアイテムのコレクション内のすべてのアイテムで機能するため、役に立ちません。この場合、thisプラグインを呼び出したコレクションを参照します。

$.fn.MyPlugin = function () {

    return this.mouseenter(function () {
       $(this).something();
       //do something for single plugin instance
    });

};

次に、次のようにプラグインを呼び出します。

$('elements').MyPlugin();

必要な要素でプラグインを呼び出すだけで、それらの要素にmouseenterイベントが関連付けられます。

于 2012-04-24T21:56:41.250 に答える
1

プラグインを使用しているHTMLは何ですか?mouseenterは要素IDに接続できるため、(this).mouseenterを呼び出す代わりに、idでdivを呼び出します(つまり、$( "div.somediv")。mouseenter(function(){....何をしたいのか。 ....}

jqueryサイトは、ネストされたdivに複数のマウスイベントを使用する例を示しています。

http://api.jquery.com/mouseenter/

于 2012-04-24T21:52:07.720 に答える