4

さまざまなページに Javascript を介して埋め込まれた一連のアプリがあるため、親ページで誤って何かを選択しないようにセレクターを作成する際には、できる限り注意することが重要です。(親マークアップを制御することはできず、iframe はオプションではありません。)

親ページはすべて.noConflict()モードで jQuery を使用し、私のアプリは常にdivクラス内に存在しますmy_app_class

(function($) {
    var el = $(".my_app_class"); //my code

}(window.jQuery));

jQ セレクターの前に「my_app_class」を追加することを常に覚えているのはかなり良いことですが、$. 本質的に、私は欲しい:

$(".headline")

常に等しくするには:

$(el).find(".headline")

これを行う単純な方法は次のようになります。

$ = function(selector) {
    return jQuery(el).find(selector);
}

しかし、親ページで実際に選択を行う必要がある場合 (時々発生します) に備えて、スーパー機能を維持したいと考えています。また、jQuery の他の使用法を上書きしたくありません$.ajax

関数に別名を付けてオリジナルを維持するのが最善でしたか? 私はこのようなものが欲しい

(new $) = selection inside `.my_app_class`

($$) = (old $)

ありがとう!

4

1 に答える 1

0

あなたが試みているのは、ちょっとしたメンテナンスの頭痛の種です。他の誰かがあなたのコードを拾うと、jQuery 構文をあなたがやりたいことへと頭の中で変換しようとして、非常に混乱するでしょう。

代わりに、コードを単純な jQuery プラグインとして記述し、適切なクラスに適用する場合。それで:

1)jQuery自体をハッキングすることなく、関連する要素のみに自然に適用されることがわかります。

2)動的に読み込まれたコンテンツにそれらを適用する範囲が突然あります(これもクラスに基づいていますが、今回は読み込まれたコンテンツです)。

コードをプラグインとして記述するモデルは数多くあります。jQueryUI である単純なもの$.widget

于 2015-04-20T10:13:58.270 に答える