Javascript 此选择器正在运行

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(

我想知道如何在函数中使用$(this)选择器。我尝试了在互联网上找到的多种方法,但似乎都不管用

这里有一个我正在尝试做的例子

函数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)
,但这似乎很有趣。第一次看到这样的调用函数。有趣。