event.currentTarget在jQuery中总是等于$(this)吗?

Alo*_*lon 12 javascript jquery

这句话总是如此吗?

$("p").click(function(event) {
  alert( event.currentTarget === this ); 
});  
Run Code Online (Sandbox Code Playgroud)

一种方法比另一种方法更受欢迎吗?我喜欢用$(this)而不是 event.currentTarget但在某些情况下可以做得更好吗?哪个更好?绝对一样吗?

另一个细微差别 - 当检查萤火虫console.log(this)console.log($(this))给我完全相同的元素.如果它们是相同的 - 有什么不同?(因为我知道我可以写这个$(this).css('color','white')但不能写this.css('color','white')

lon*_*day 13

一般来说,是的,它会是一样的.您可以通过使用$.proxy操作上下文来使其不同,但在实践中您可能永远不会.

$(document.body).on('click', $.proxy(function(e) {
    console.log(this);            // window
    console.log(e.currentTarget); // document.body
}, window));
Run Code Online (Sandbox Code Playgroud)

至于另一个问题,this是一个本机DOM元素,而是$(this)一个包装该DOM元素的jQuery对象.jQuery包装器意味着您可以运行jQuery函数css,这些函数在本机DOM元素上不可用.


而且,为了回答你问题的准确措辞,event.currentTarget通常是等于this,而不是$(this).