フィードバックの後、質問を完全に書き直します。
次のマークアップがあります。
<body>
<h1>Title</h1>
<p>bla</p>
<div>
... <!-- a thousand tags -->
</div>
<div id="do-not-modify-me">
<!-- a hundred tags -->
</div>
</body>
アクセスできます:
<h1>Title</h1>
<p>bla</p>
<div>
... <!-- a thousand tags -->
</div>
使用:
$('body > *:not(div#do-not-modify-me)');
これにより、「do-not-modify-me」という ID を持つ div を除く本文のすべてのコンテンツを取得できます。
ここで、jquery を使用した選択と同じように、別のプログラマーが本体内の任意のものを選択できるようにする関数を作成したいとしましょう。他のプログラマーは div#do-not-modify-me を変更すべきではありませんが、気にする必要もありません。
$('body > *:not(div#do-not-modify-me)')
頻繁に呼び出されるので、キャッシュします。
アイデアは次のとおりです。
// TEST CODE
windows.new_body = $('body > *:not(div#do-not-modify-me)');
function select(selector) {
return $(selector, windows.new_body);
}
したがって、他のプログラマーは次のことができるはずです。
// TEST RESULT CODE
select("p").css("color", "red");
本体のすべてが赤くなります<p>
が、div#do-not-modify-me に含まれるものは赤くなりません。
TEST CODE は機能しません。現在のところ、それ自体の結果ではなく、コンテキストの結果の子に css() を適用するためです。
例:
select("p").css("color", "red");
次のように動作します。
$('body > * p :not(div#do-not-modify-me)').css("color", "red");
望ましい結果は次のようになります。
$('body > p :not(div#do-not-modify-me)').css("color", "red");
ご了承ください :
$('body > * :not(div#do-not-modify-me)').parent().css("color", "red");
<p>
div#do-not-modify-me が赤くなるため機能しません。
TEST RESULT CODE の結果をどのように取得しますか? コードの任意の部分を変更できます。