jQuery 中的 $(this) 和 this 有什么区别?

发布于 2024-09-18 18:28:37 字数 90 浏览 4 评论 0原文

jQuery 中的 $(this)this 之间有什么区别,为什么它们有时给出相同的结果,而有时却表现不同?

What's the difference between $(this) and this in jQuery, and why do they sometimes give the same result and other times behave differently?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

一绘本一梦想 2024-09-25 18:28:37

$(this) 用 jQuery 功能包装 this

例如,此代码将失败:

$('.someDiv').onClick(function(){
    // this refers to the DOM element so the following line would fail
    this.fadeOut(100);
});

因此我们将 this 包装在 jQuery 中:

$('.someDiv').onClick(function(){
    // wrap this in jQuery so we can use jQuery fadeOut
    $(this).fadeOut(100);
});

$(this) wraps this with the jQuery functionality.

For example, this code would fail:

$('.someDiv').onClick(function(){
    // this refers to the DOM element so the following line would fail
    this.fadeOut(100);
});

So we wrap this in jQuery:

$('.someDiv').onClick(function(){
    // wrap this in jQuery so we can use jQuery fadeOut
    $(this).fadeOut(100);
});
固执像三岁 2024-09-25 18:28:37

$(this) 用 jQuery 函数修饰 this 指向的任何对象。典型的用例是 this 引用 DOM 元素(例如

)。然后,编写 $(this) 允许您使用该

上的所有 jQuery API 函数。

如果 this 已经引用了一个 jQuery 对象(通常是一个 jQuery 修饰的 DOM 对象),那么调用 $(this) 将不起作用,因为它已经被修饰了。

$(this) decorates whatever object this points to with the jQuery functions. The typical use case is for this to reference a DOM element (say, a <div>). Then, writing $(this) allows you to use all the jQuery API functions on that <div>.

If this already refers to a jQuery object - usually a jQuery-decorated DOM object - then calling $(this) will have no effect because it's already decorated.

2024-09-25 18:28:37

如果在当前上下文中 this 不是 jQuery 对象,则可以通过将其包裹在 $() 周围使其成为 jQuery 元素。当您的元素已经是 jQuery 表达式的结果时,在这种情况下 this 已经是一个 jQuery 对象。所以在这种情况下它们的工作原理相似

If in your current context if the this is not a jQuery object, you can make it a jQuery element by wrapping it around $(). When your element already is a result of jQuery expression, the this in that case is already a jQuery object. So in that case they both work similarly

自由如风 2024-09-25 18:28:37

为了让您更好地理解,请为自己准备一个调试器,例如 google chrome 并执行此操作..

$('a').click(function(){
    console.log(this); //DO
    console.log($(this)); //JO
});

这将向您展示其中的区别:)

for you to understand a little bit better, get yourself a debugger of somekind such as google chrome and do this..

$('a').click(function(){
    console.log(this); //DO
    console.log($(this)); //JO
});

this will show you what the difference is :)

阿楠 2024-09-25 18:28:37

this 是一个 JavaScript 变量,每当您处于附加到对象的函数内部时就会创建该变量。在这些情况下,this 引用该对象。

$(this) 返回一个 jQuery 对象,您可以在其上调用 jQuery 函数,但仅适用于 this

例如,如果您为所有锚点设置一个单击处理程序:

$('a').click(function() {
    console.log(this.href) ;
}) ;

this 指的是单击事件(函数)附加到的锚点。

this is a javascript variable created whenever you are inside a function which is attached to an object. In these cases, this refers to that object.

$(this) returns a jQuery object which you can call jQuery functions on, but will apply only to this.

For example, if you set a click handler for all anchors:

$('a').click(function() {
    console.log(this.href) ;
}) ;

then the this, refers to the anchor, which the click event (function) is attached to.

墨小墨 2024-09-25 18:28:37

$(这个)==这个?有趣的。

这不能通过 DOM 事件传递。

$(this) == this ? interesting.

this must not pass by DOM event.

私藏温柔 2024-09-25 18:28:37

在 JavaScript 中,this 始终指正在执行的函数的“所有者”。使用 $(this) 只会包装所有者,以便所有 jQuery 操作都将被扩展并可供其使用。

考虑一下:

$links = $('#content a');

$links.click(function() {
    link  = this;
    $link = $(this); //jQuery wrapped object.

    alert(link.getAttribute('href'));        
    alert($link.attr('href')); //we can use the attr() function from jQuery
});

它们通常会给出相同的结果,因为所有者是相同的,只是当被 jQuery 包装时,它可以使用 jQuery 函数进行操作。

In JavaScript this always refers to the “owner” of the function that is executing. Using $(this) will only wrap the owner so that all the jQuery operations will be extended and available to it.

Consider:

$links = $('#content a');

$links.click(function() {
    link  = this;
    $link = $(this); //jQuery wrapped object.

    alert(link.getAttribute('href'));        
    alert($link.attr('href')); //we can use the attr() function from jQuery
});

They usually give the same results since the owner is the same, only that when wrapped by jQuery it can operate with the jQuery functions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文