当
假设您有以下代码:
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元素。