2

私は、理想的には独自の名前空間に入れたいjQueryプラグインを書いています。

これまでのところ、これは機能しているようです (名前空間のネストに関して)

(function($) {
    $.fn.nspace = {
        foo: function() {
            // Does not work becuase $(this) is not the correct selector.
            $(this).show();
        }
    }
})(jQuery);

したがって、上記の例を考えると、次のように関数を呼び出すことができます。

$("html, body").nspace.foo();

$(this)はありません[html, body]...どうすればこれを解決できますか?

編集:明確にするために(ユーザーのコメントに基づいて)...

$("html, body").nspace.foo();foo を呼び出す必要があります[html, body]が、$(this)nspace 内で nspace に解決されるため、呼び出しようとしていますnspace.foo();

4

3 に答える 3

1

jQuery プラグインの古典的なパターンを使用することを検討する必要があります: 1 つのメソッドのみを定義します: あなたの場合は nspace. このメソッド内では、すべてのケースを考慮に入れます。難しそうに見えますが、調べてみれば簡単です。(ちなみに、jQuery プラグインを作成するときは必ず確認する必要があります)

于 2013-04-02T09:16:01.473 に答える
0

オブジェクトをプラグインとして追加しても、オブジェクトの取得に使用された jQuery オブジェクトを取得することはできません。オブジェクトでメソッドを呼び出すとき、その jQuery オブジェクトへの参照はありません。

関数をプラグインとして直接配置します。

(function($) {
  $.fn.nspace = function() {
    this.show();
  };
})(jQuery);

使用法:

$("html, body").nspace();

(オブジェクトは jQuery インスタンスであり、セレクターや要素ではないことに注意してください。そのため、 を使用する必要はありません$(this))。

于 2013-04-02T09:15:53.200 に答える