假设您有以下代码:
function name() {
$(this).css('background', 'red');
}
$('selector1').click(name);
$('selector2').click(function () {
name.call($(this).parent());
});
现在,当通过单击'selector1'调用该函数时,this
是一个HTML对象,$(this)
是一个jQuery对象,但如果通过单击'selector2'调用该函数{{1已经是一个jQuery对象,那么什么是this
?
我知道我可以执行类似$(this)
的操作来获取HTML对象,但我的问题是当您执行name.call($(this).parent()[0]);
或$($(this))
之类的操作时会发生什么?结果是什么,最显着的是,使用这种结构有什么危害?
答案 0 :(得分:5)
$(this)
已经是jQuery对象时, this
就是同一个jQuery对象。
来自jQuery docs:
克隆jQuery对象
当jQuery对象传递给
$()
函数时,会创建该对象的克隆。 这个新的jQuery对象引用与初始DOM元素相同的DOM元素。