【发布时间】:2011-02-07 06:18:47
【问题描述】:
鉴于以下 HTML 示例...
<div id='div1'>div one</div>
<div id='div2'>div two</div>
...我发现下面的jQuery代码...
$('#div1').click(function() {
var $d = $(this); // Using 'this' instead of '#div1'
$d.add('#div2').remove();
});
...不会将#div2 添加到$d 引用的集合中,但是这段代码...
$('#div1').click(function() {
var $d = $('#div1'); // Using '#div1' instead of 'this'
$d.add('#div2').remove();
});
...成功添加#div2。
在咨询 firebug 时,我发现使用 $(this) 给 jQuery 对象一个上下文 #div1,但是使用 $('#div1') 给对象一个上下文 document。
鉴于我尝试过的这些信息...
var $d = $(this, document);
...add() 函数按预期工作。
所以问题来了。有人可以向我解释为什么在使用 $(this) 和 $('#div1') 时分配不同的上下文吗?
【问题讨论】: