jQuery全局上下文

Tim*_*nin 2 jquery

假设以下html结构:

<div id="anId">
    <span id="1"> aSpan </span>
    <span id="2"> anotherSpan </span>
</div>
<span id="3"> anOutsideSpan </span>
Run Code Online (Sandbox Code Playgroud)

有没有办法为jQuery选择器定义"全局上下文"?就像是:

$(IDoNotKnowWhatToDoHere). SomethingAboutContext; // Defining the context as div#anID

$('span').doSomething; // Action only on span#1 and span#2 and not on span#3

$('span#1').doSomethingElse;

$('span').doSomethingStrange;

$('span#2').doSomethingCool;

$(SomethingAboutRemovingGlobalContext); //Removing the context
Run Code Online (Sandbox Code Playgroud)

这样我可以避免这样做:

$('div#anId span').doSomething; // Action only on span#1 and span#2 and not on span#3

$('div#anId span').doSomethingElse; // Same as last code comment

$('div#anId span#1').doSomethingStrange; // Same as last code comment

$('div#anId span#2').doSomethingCool; // Same as last code comment
Run Code Online (Sandbox Code Playgroud)

这里只有4个动作,但我正在处理的代码有100个.

我想避免总是重复div#anId.

  • 请记住,这是一个例子,而不是实际的代码.

  • 我的问题不是关于链接.

Ray*_*nos 5

var $g = $.proxy($.fn.find, $("div"));
$g('span').doSomething; // Action only on span#1 and span#2 and not on span#3
$g('#1').doSomethingElse;
$g('span').doSomethingStrange;
$g('#2').doSomethingCool;
Run Code Online (Sandbox Code Playgroud)

所以你在这里做的是你创建一个新的选择器,它代表$("div").find并使用它来进行所有选择.