3

jQueryは現在window、デフォルトの要素として使用しているため、のような呼び出しは、内のタグ$('div')を検索します。divwindow

次のようにjQueryのデフォルトを変更する方法はありますか?

$.defaultRoot = $('.anyOtherRootElement');
$('div').text("Hello");

.anyOtherRootElementこれにより、クラスを含む要素内のすべてのdivが選択されます。

前もって感謝します


Upate

ここで質問をもう少し洗練するだけの更新:

何が何であるかを知らない外部スクリプトからの外部クエリに基づいて上記のアクションを実行したいdefaultRootので、現在のベースと思われるものを呼び出すことができます。この場合、残念ながら、2番目のパラメータはオプションではありません。

同時に、returnを作成するfunctionと、、などのdefaultRoot.find(el)第1レベルのメソッドを使用できなくなります。残念ながら、それも不可能です。$.trim$.each

4

4 に答える 4

3

理想的には(パフォーマンス上の理由から)使用したいfind()

$.defaultRoot.find("div");

それ以外の場合は、コンテキストを設定する2つの引数形式を使用できます

   $("div", $.defaultRoot);

一般に、これらのタイプのことを暗黙的に実行することは望ましくありません。後でコードを操作する必要があるときに、他の誰かが簡単に完全に混乱してしまう可能性があるためです。一貫して実行して短くしたい場合は、次のように独自の関数を作成する必要があります。

var $s = function(selector) {
  return $.defaultRoot.find(selector);
}

そして、あなたはただ使うことができるでしょう

$s("div")

または、次のようなスコープ付き高階関数を実行することもできます

var withScope = function(scope$) {
  return function(selector) {
    return scope$.find(selector);
  }
}

var $s = withScope($.defaultRoot);
$s("div")

なんらかの理由で、クライアントコードのデフォルトの状態(カオスIMOを懇願する)を本当に回避したい場合は、機能の実践であるカリー化を検討する必要があります。

于 2012-09-28T11:08:30.763 に答える
0
$('SELECTOR', 'CONTEXT')

コンテキストを使用できます。あなたの場合のように$('div', '.anyOtherRootElement')

詳細については、http://api.jquery.com/jQuery/にアクセスしてください。

于 2012-09-28T11:06:32.483 に答える
0

jQueryがそのようなメソッドや変数を提供しているとは思いません。ただし、jQueryメソッドで2番目のパラメーターを渡して、コンテキストを設定できます。

$.defaultRoot = $('.anyOtherRootElement');
$('div', $.defaultRoot ).text("Hello"); // all div inside $('.anyOtherRootElement')
$('div' ).text("Hello"); //all div inside body tag
于 2012-09-28T11:07:26.970 に答える
0

コンテキストを2番目の引数として渡すことができるとする$()と、Javascriptの演算子を、を使用して内部的にJQueryを呼び出しjQuery.noConflict();、常に新しいルートを2番目の引数として渡すバージョンで簡単に上書きできます。

于 2012-09-28T11:10:05.883 に答える