Javascript 此选择器正在运行
我想知道如何在函数中使用$(this)选择器。我尝试了在互联网上找到的多种方法,但似乎都不管用 这里有一个我正在尝试做的例子Javascript 此选择器正在运行,javascript,jquery,function,this,selector,Javascript,Jquery,Function,This,Selector,我想知道如何在函数中使用$(this)选择器。我尝试了在互联网上找到的多种方法,但似乎都不管用 这里有一个我正在尝试做的例子 函数bobsCar(){ $(this.toggle(); } $('p')。单击(函数(){ bobsCar(); });您不能在被调用函数中直接使用此。必须将选定对象作为函数参数传递 function bobsCar(element) { $(element).toggle(); } $('p').click(function() { bobsCar(
函数bobsCar(){
$(this.toggle();
}
$('p')。单击(函数(){
bobsCar();
});
您不能在被调用函数中直接使用此
。必须将选定对象作为函数参数传递
function bobsCar(element) {
$(element).toggle();
}
$('p').click(function() {
bobsCar(this);
});
该函数内部不再冻结“p”标记,您可以传递它
function bobsCar(el) {
el.toggle();
}
$('p').click(function() {
bobsCar($(this));
});
另一个选项是使用自定义上下文执行函数,如
function bobsCar() {
$(this).toggle();
}
$('p').click(function() {
bobsCar.call(this);
});
在您的情况下,因为您在没有上下文的情况下调用bobsCar
,所以它里面的这个
引用了窗口
对象,这就是它不工作的原因
函数bobsCar(){
$(this.toggle();
}
jQuery('p')。单击(函数(){
bobsCar.呼叫(此);
});代码>
单击我
单击事件处理程序中的此
的值不是选择器的字符串表示形式。它是一个DOM节点
如果要覆盖函数的this
的正常值,可以使用call
或apply
指定该值
bobsCar.call(this);
你可以把它作为一个论点来传递
bobsCar(this);
function bobsCar(domNode) {
$(domNode).toggle();
}
不过,您可能应该首先将函数用作事件处理程序
$('p').click(bobsCar);
在JavaScript中,$(this)是一个上下文指针。它为您提供放置在堆栈上的最顶层上下文
函数bobsCar(elm){console.log(elm);
$(elm).parent().toggleClass();}
$('p')。单击(函数(){var$this=$(this);bobsCar($this);})
jsiddle.net/q325d6zw您希望函数不用于哪个元素???有关如何在函数中设置此
的规则,请阅读以下内容:。由于bobsCar()
是一个正常的函数调用,因此根据Javascript规则,此
将是窗口
或未定义
(如果在严格模式下运行)。调用函数时,此
的值不会自动保留。它是根据调用函数的方式重置的(参见上面引用的规则)。。。有趣的是,我从未使用过fn.call(args)
,但这似乎很有趣。第一次看到这样的调用函数。有趣。