Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery中event.currentTarget是否始终等于$(this)?_Javascript_Jquery - Fatal编程技术网

Javascript 在jQuery中event.currentTarget是否始终等于$(this)?

Javascript 在jQuery中event.currentTarget是否始终等于$(this)?,javascript,jquery,Javascript,Jquery,这句话总是对的吗 $("p").click(function(event) { alert( event.currentTarget === this ); }); 一种方法比另一种更可取吗?我喜欢使用$(this)而不是event.currentTarget,但是在某些情况下可以做得更好吗?哪个更好?完全一样吗 另一个细微差别是,当检查firebugconsole.log(this)和console.log($(this))时,我得到了完全相同的元素。如果它们是相同的,有什么不同?

这句话总是对的吗

$("p").click(function(event) {
  alert( event.currentTarget === this ); 
});  
一种方法比另一种更可取吗?我喜欢使用
$(this)
而不是
event.currentTarget
,但是在某些情况下可以做得更好吗?哪个更好?完全一样吗


另一个细微差别是,当检查firebug
console.log(this)
console.log($(this))
时,我得到了完全相同的元素。如果它们是相同的,有什么不同?(因为我知道我可以写这个
$(this.css('color','white')
,但不能写
这个.css('color','white')
这个属性通常与函数的this相同


如果您使用jQuery.proxy或其他形式的作用域操纵,这将等同于您提供的任何上下文,而不是event.currentTarget。一般来说,是的,它将是相同的。您可以通过使用操纵上下文使其不同,但实际上您可能永远不会

$(document.body).on('click', $.proxy(function(e) {
    console.log(this);            // window
    console.log(e.currentTarget); // document.body
}, window));
至于另一个问题,
this
是本机DOM元素,而
$(this)
是包装该DOM元素的jQuery对象。jQuery包装器意味着您可以运行诸如
css
之类的jQuery函数,这些函数在本机DOM元素上不可用



而且,为了回答您问题的确切措辞,
event.currentTarget
通常等于
this
,而不是
$(this)
您的部分答案在上面。我希望它足够清楚

没有
console.log(this)
console.log($j(this))
将不会给出相同的结果。$(this)将其转换为jQuery对象,因此您可以调用类似.css的方法,这些方法可以在jQuery对象($(this))上调用,而不是将成为
this
的HTML元素