jQuery双对象构造函数-例如$($(this))

jQuery double object constructor - e.g. $($(this))

本文关键字:this -例如 对象 构造函数 jQuery      更新时间:2023-09-26

假设您有以下代码:

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))$($('selector'))之类的事情时会发生什么?结果是什么?最重要的是,使用这样的结构有什么害处吗?

this已经是jQuery对象时,$(this)会创建jQuery对象的副本。

来自jQuery文档:

克隆jQuery对象

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