jquery - $(this) 和 this 有什么区别?

标签 jquery

有人可以解释一下,它们之间有什么区别吗?

例如,我可以用“that”来做到这一点:

var bar;
button.click(function () {
    if (bar == this) {
        alert('same');
    }
    bar = this;
});

并且不能使用 $(that):

var bar;
button.click(function(){
  if(bar == $(this)) {alert('same');}
  bar = $(this);
});

最佳答案

您的第二个示例不起作用,因为每次您使用 $(this) 函数时,它都会返回一个唯一 jQuery 对象:

var a = document.createElement('a');
var b = $(a);
var c = $(a);

现在,bc 都是唯一的 jQuery 实例。

console.log(c == b) // prints false

使用 jQuery 点击事件时,this 是回调中的 event.currentTarget,即绑定(bind)点击的 HTML 元素:

button.click(function(e) {
    console.log (e.currentTarget == this) // prints true
})

$(this)jQuery(this) 是一个函数,它返回包装在唯一 jQuery 对象中的 HTML 元素,并包含所有 jQuery 原型(prototype)。

关于jquery - $(this) 和 this 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295283/

相关文章:

javascript - 如何在下一张幻灯片进入时停止幻灯片放映隐藏文本和图像在顶部跳跃?

javascript - 下拉菜单默认选择从数据库值中选择

javascript - 使用 JQuery 自动填充输入字段

javascript - Html 将 div 附加到另一个 div 中

javascript - 如何使用瓷砖坐标谷歌地图在瓷砖内填充颜色?

javascript - 在另一个 Ajax 请求中处理多个 Ajax 请求

c# - 使用 Controller 返回的值填充图表

javascript - 将 DOM 元素传递给 jQuery 自定义插件

javascript - 动态生成的日历元素上的 jQuery 单击事件?

javascript - jquery提交表单问题