jQuery删除特定子元素

16

我有以下代码:

$('.TopNotificationIcon span').remove();    

我可以用 this 替换 .TopNotificationIcon,即只有 span 存在于这个特定的类中。

这是结构:

<div class="TopNotificationIcon"><span>xxxxx</span></div>

当点击.TopNotificationIcon时,应该移除span元素。


2
你不确定确切地理解了对方想要什么?你是想要测试一个span是否处于某个类别中,还是想在一个函数中删除所有TopNotification下的span? - Brice Favre
5个回答

19

如果你有为.TopNotificationIcon添加点击事件,你可以像这样做:

$('.TopNotificationIcon').click(function(){
    $('span',this).remove();    
});

我的错误不同,但社区认为这是正确的。所以感谢这个提示,希望它是正确的,没有时间去检查它。 - aWebDeveloper

15

我会使用find()方法,因为它似乎是最快的:

$("div.TopNotificationIcon").click(function() {

    $(this).find("span").remove();    

});

@TheSuperTramp使用的上下文只是find()的简写。 - kapa
是的,但那只是转而执行一个 find() ,不是吗?所以,直接使用 find() 更明智。 - Code Maverick
区别是如此微小,以至于您应该使用对您更易读和逻辑更清晰的那个:)。 - kapa
@bazmegakapa - 我听取的大师们总是说find() > context。我知道你的意思,但最简单形式中的最小值,在复杂形式中可能会更大。因此,删除额外的操作可能会更加明显。 - Code Maverick
1
这就是那种微观优化,我的大师们一直让我远离它。 - kapa

4
如果你想要移除 TopNotification 下的所有 span,可以这样做:
$('div').live('click', function(){
    $(this).children('span').remove();    
});

它将删除一个 div 中的所有子元素。

这样写有点啰嗦了。$('.TopNotificationIcon span').remove(); 就足够了。 - kapa

3

2

试试这个...

$('span').remove('.TopNotificationIcon');

这将删除所有具有TopNotificationIcon类的span元素以及子元素。

这不是 OP 想要的。.TopNotificationIcon 是要移除的 span 的父级之一。 - kapa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接