【问题标题】:jquery remove specific childrenjQuery删除特定的孩子
【发布时间】:2011-09-01 00:58:29
【问题描述】:

我有以下代码:

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

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

这是结构

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

点击.TopNotificationIconspan 应该被删除。

【问题讨论】:

  • 不确定您到底想要什么?您是要测试某个 span 是否在某个类下,还是要在函数中删除 TopNotification 下的所有 span?

标签: javascript jquery


【解决方案1】:

如果你有.TopNotificationIcon 的点击事件,你可以这样做

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

【讨论】:

  • 我的错误是不同的,但社区声称这是正确的。所以谢谢你的提示希望它是正确的没有时间检查它
【解决方案2】:

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

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

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

});

【讨论】:

  • @TheSuperTramp 使用的上下文只是find() 的简写。
  • 是的,但这只是转过身来做一个find(),不是吗?那么,直接使用find() 不是更谨慎吗?
  • 差异是如此之小,您应该使用对您来说更具可读性和逻辑性的那个:)。
  • @bazmegakapa - 我听过的大师总是说 find() > 上下文。我知道你在说什么,但最简单的形式最小的东西,在复杂的形式中可能更大。所以删除额外的操作可能会很明显。
  • 这是我的大师们让我远离的那种微优化。
【解决方案3】:

如果你想删除 TopNotification 下的所有跨度,你可以这样做:

$('div').live('click', function(){
    $(this).children('span').remove();    
});

它将删除 div 中的所有子项。

【讨论】:

  • 这是不必要的冗长。 $('.TopNotificationIcon span').remove(); 就够了。
【解决方案4】:

是的,但您需要将行更改为:

$(this).children('span').remove();

js 小提琴:http://jsfiddle.net/UNhhh/1/

【讨论】:

    【解决方案5】:

    试试这个...

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

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

    【讨论】:

    • 这不是 OP 想要的。 .TopNotificationIcon 是要删除的 span 的父级之一。
    猜你喜欢
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多