$(’#foo’)。remove(’a’)和$(’#foo’)。find(’a’)。remove()之间的区别

我正在尝试使用jQuery编辑HTML(来自textarea)的字符串。 当我使用此代码时,将从结果字符串中删除链接,如预期的那样:

$('#foo').find('a').remove(); $('#foo').html(); // links are removed, as expected 

但是,当我使用下面的代码时,链接不会被删除。

  $('#foo').remove('a'); $('#foo').html(); // links are still there 

为什么这不起作用? 我已经阅读了.remove()的jQuery API 文档 ,我仍然不明白。

'a'选择器是顶级filter。 它接受当前设置,查找与选择器匹配的元素,并将其删除。

 $('#foo').remove('a'); 

filter不搜索嵌套元素。

所以,如果你这样做……

 $('.myClass').remove('a'); 

…和.myClass选择器匹配以下元素……

 

a paragraph

an anchor

a NESTED anchor

an anchor an anchor

a NESTED anchor

a paragraph

…然后只会从集合中删除顶层的元素

remove已经匹配的元素集进行操作,如果传递参数,则可以选择过滤该集。 所以这是每个版本的作用:

找到#foo所有后代并删除它们:

 $('#foo').find('a').remove(); 

找到#foo集合中的所有元素并将其删除:

 $('#foo').remove('a'); 

所以如果#foo不是本身,那么最后一个绝对不会做任何事情; 如果 ),则此元素将被删除。 它与你写的基本相同

 $('a#foo').remove(); 

希望这可以帮助。 🙂

差异是

 $('#foo').remove('a');//This will help to get rid of  in the dom structure. $('#foo').remove();//This will remove the element with id foo