jquery中$(this)和this的区别

Posted

技术标签:

【中文标题】jquery中$(this)和this的区别【英文标题】:Difference between $(this) and this in jquery 【发布时间】:2011-04-07 16:34:45 【问题描述】:

使用 $(this) 与 this 的根本区别是什么

$('.viewComments').click(function(ev)
    //returns the desired value
    alert(this.getAttribute('id'));

    //Gives an error sayin function is not defined 
    alert($(this).getAttribute('id'));

    //returns the desired value
    alert($(this).attr('id'));
);

我认为“$(this)”将包含“this”具有的所有功能以及更多功能。但似乎并非如此。

那么 $(this) 到底是什么?和

我在使用时如何知道有哪些功能可用? (我知道我可以通过 firebug 获取它们。但我想知道是否有其他方法 - 可能是某些文档)

【问题讨论】:

Why do I have to use $(this)的可能重复 【参考方案1】:

this 是 DOM 对象,而 $(this) 是相同的 jQuery 包装器。

当使用this时,你可以在上面调用DOM方法,但不能调用jQuery方法。使用$(this)时,可以调用jQuery方法,但不能调用DOM方法。

【讨论】:

那么在我的 jquery 代码中使用 $(this) 是更有利还是最佳实践? @Sheldon:当然。您希望能够使用所有多汁的 jQuery 优点,不是吗? :-) 如果是这样,我怎样才能只使用一个'this'来获取DOM方法和jQuery方法? @AldiUnanto 你为什么想做这样的事情?您永远不想将两者混为一谈。 @AldiUnanto 可维护的编码不是golfing。 :-) 如果您希望代码保持可维护性,您真的不应该将两者混为一谈。但如果你真的坚持,你可以使用一些猴子修补技巧。你没有从我这里听到。【参考方案2】:

$(this) - 表示当前 DOM 元素在哪个事件上调用此函数

this 关键字 - 在 javascript 中,this 总是指我们正在执行的函数的“所有者”,或者更确切地说,指的是函数作为方法的对象。

【讨论】:

请注意$(this) 表示包装为jQuery 对象的DOM 元素因为when this 指的是DOM 元素作为原生 DOM API 对象【参考方案3】:

在 jQuery 中,this 指的是 DOM 对象,$(this) 指的是同一个对象,但添加了 jQuery 方法

你不能调用this.each(),因为每个都不是 DOM 方法,它是一个 jquery 方法

你可以调用$(this).each(),因为$(this)返回一个jquery对象

【讨论】:

【参考方案4】:

$(this) 是使用 jQuery 选择器或附加到对象的事件选择的当前对象。

所以如果您有$('#myelement').click(.....,那么$(this) 指的是被点击的元素,因此$(this).hide() 会隐藏该元素。

【讨论】:

【参考方案5】:

以下两篇文章可能对您有所帮助:

What is this? 由 Mike Alsup 提供

jQuery's this: demystified 雷米夏普

【讨论】:

【参考方案6】:

$(this) 是一个 jQuery 对象,你可以使用 jQuery 的强大和美丽,但是使用 'this' 关键字,需要使用原生 JavaScript。

【讨论】:

【参考方案7】:

在 jQuery 中,$() 表示法是 jQuery 选择器 的简写,所以如果你说 $(this),你是在要求 jQuery 重新选择你的对象。然后你就可以使用常用的 jQuery 函数了。 那么,this 就是外部 jQuery 调用 (JavaScript) 选择的对象。

【讨论】:

以上是关于jquery中$(this)和this的区别的主要内容,如果未能解决你的问题,请参考以下文章

jQuery中this与$(this)的区别

JQuery this和$(this)的区别及获取$(this)子元素对象的方法

$(this)与this的区别

jQuery中$this和$(this)的区别介绍

JQuery中this和event.target的区别

jquery插件模式中this和this.each有什么区别?