强制jQuery将其范围限制为某个div

强制jQuery将其范围限制为某个div,jquery,scope,Jquery,Scope,有没有一种方法可以将$替换为$\u sub之类的东西,其操作包含在div中?例如,我想将$\u sub注入函数,而不是使用$,函数使用$\u sub将其范围限制在div内,同时保留可以在$上调用的方法(例如,我应该能够执行$\u sub.ajax()) 函数修改($\u子){ var internal_a=$\u sub(“a”);//应仅返回内部 } context在这种情况下对我不起作用。我希望函数认为$\u sub就像$一样。我可以将函数签名更改为将$\u sub重命名为$,这样函数甚

有没有一种方法可以将
$
替换为
$\u sub
之类的东西,其操作包含在
div
中?例如,我想将
$\u sub
注入函数,而不是使用
$
,函数使用
$\u sub
将其范围限制在
div
内,同时保留可以在
$
上调用的方法(例如,我应该能够执行
$\u sub.ajax()


函数修改($\u子){
var internal_a=$\u sub(“a”);//应仅返回内部
}
context
在这种情况下对我不起作用。我希望函数认为
$\u sub
就像
$
一样。我可以将函数签名更改为将
$\u sub
重命名为
$
,这样函数甚至不知道它正在使用范围有限的实际
$
版本

使用:
jQuery(选择器[,上下文])

只需传递第二个参数

在您的示例中,它将是:
var-internal_a=$(“a”,“内容”)
相当于
$(“内容”)。查找(“a”)

使用:
jQuery(选择器[,上下文])

只需传递第二个参数

在您的示例中,它将是:
var-internal_a=$(“a”,“内容”)
相当于
$(“内容”)。查找(“a”)


其他答案中提到的上下文选项似乎更合理,但如果您确实无法使用它,则可以使用curry函数自动提供上下文,然后将curry函数传递到您的modify函数中:

var curry=function(){
var args=Array.prototype.slice.call(参数);
var fn=args[0];
var after=args.slice(1);
返回函数(){
返回fn.apply(此,在.concat之后(
Array.prototype.slice.call(参数));
};
};    
var$\u sub=函数(上下文,sel){
返回$(上下文)。查找(sel);
}
var$_sub=咖喱($_sub,#content');
函数修改($$){
var内部_a=$$(“a”);
console.log(internal_a.text());
}
修改($_sub)

其他答案中提到的上下文选项似乎更合理,但如果您确实无法使用它,您可以改为使用curry函数自动提供上下文,然后将curry函数传递到您的modify函数中:

var curry=function(){
var args=Array.prototype.slice.call(参数);
var fn=args[0];
var after=args.slice(1);
返回函数(){
返回fn.apply(此,在.concat之后(
Array.prototype.slice.call(参数));
};
};    
var$\u sub=函数(上下文,sel){
返回$(上下文)。查找(sel);
}
var$_sub=咖喱($_sub,#content');
函数修改($$){
var内部_a=$$(“a”);
console.log(internal_a.text());
}
修改($_sub)


设计这样一种方法来限制选择器的作用域,而不是jquery,因为它加载整个DOM,而不是DOM树中的特定节点。只需将上下文作为第二个参数传入即可
$\u sub=$
将jquery引用复制到新变量。但它的范围将不仅仅局限于它可以访问的dom elemetns。为什么不在yur选择器中限制父基的范围?你想做什么?你可以使用更具体的选择器。例如:
$\u sub(“#contents a”)
,它将抓取
#contents
元素中的任何
a
元素。为什么不抓取<代码>变量$_sub=$(“#内容”)$_sub.find('a')设计这样一种方法来限制选择器的作用域,而不是jquery,因为它加载整个DOM,而不是DOM树中的特定节点。只需将上下文作为第二个参数传入即可
$\u sub=$
将jquery引用复制到新变量。但它的范围将不仅仅局限于它可以访问的dom elemetns。为什么不在yur选择器中限制父基的范围?你想做什么?你可以使用更具体的选择器。例如:
$\u sub(“#contents a”)
,它将抓取
#contents
元素中的任何
a
元素。为什么不抓取<代码>变量$_sub=$(“#内容”)$_sub.find('a')上下文在此场景中对我不起作用。我希望函数认为$\u sub与$。我可以将函数签名更改为将$\u sub重命名为$,这样函数甚至不知道它使用的是范围有限的实际$context版本,在这种情况下对我不起作用。我希望函数认为$\u sub与$。我可以将函数签名更改为将$\u sub重命名为$,这样函数甚至不知道它使用的是范围有限的实际$版本,但curried函数返回的是jquery元素,而不是jquery函数($)。因此,我认为您不能在$$上调用通常在$上调用的方法(例如,$$.ajax将不起作用),但是curried函数返回jquery元素,而不是jquery函数($)。因此,我认为您不能在$$上调用通常在$$上调用的方法(例如,$$.ajax将不起作用)
<a href="#">Outside </a>
<div id="contents" >
    <a href="#">Inside </a>
</div>

function modify($_sub) {
    var inner_a = $_sub("a"); //should return only the inner <a>
}