4

假设您有以下代码:

function name() {
    $(this).css('background', 'red');
}

$('selector1').click(name);

$('selector2').click(function () {
    name.call($(this).parent());
});

现在,当通过单击“selector1”调用该函数时this是一个 HTML 对象和$(this)一个 jQuery 对象,但如果通过单击“selector2”调用该函数this已经是一个 jQuery 对象,那是$(this)什么?

我知道我可以做一些事情name.call($(this).parent()[0]);来获取一个 HTML 对象,但我的问题是当你做类似的事情时会发生什么$($(this))or $($('selector'))?这样做的结果是什么,最无能为力的是,使用这种结构有什么害处吗?

4

1 回答 1

6

$(this)when thisis already a jQuery object 创建 jQuery 对象的副本。

来自jQuery 文档

克隆 jQuery 对象

将 jQuery 对象传递给$()函数时,会创建对象的克隆。这个新的 jQuery 对象引用了与初始对象相同的 DOM 元素。

于 2012-08-28T12:49:06.563 回答