需要澄清一些不在DOM

时间:2015-05-20 05:33:09

标签: javascript jquery object

我试图使用浏览器控制台来进行一些HTML代码操作。在控制台中,我输入

s = $('<div><span>ddd</span></div>');
s.remove('span');

请注意,jQuery对象s不在DOM中,它只存在于控制台中。事实证明,span并未从s中删除。另一方面,如果<div><span>ddd</span></div>位于HTML中,则肯定会删除span

这提出了一个令我困惑很久的问题。如果我理解正确,使用$(),我可以将很多东西变成jQuery对象,即使它们实际上不在DOM中。但是这种jQuery对象与链接到某些DOM元素的jQuery对象有什么区别?在上面的代码中,为了实际删除span并将输出作为<div></div>,我是否必须将其写入DOM?

1 个答案:

答案 0 :(得分:2)

这是因为你没有正确使用$.fn.remove。删除子span的正确方法是首先找到它:

s = $('<div><span>ddd</span></div>');
s.find('span').remove();

当您为remove提供选择器时,jQuery会过滤此选择器提供的集合。但是,在您的情况下,没有任何内容可以过滤掉,因为div显然不是span。所以s.remove('span');什么也没有删除。