Javascript 删除已定义属性的子项-不工作

Javascript 删除已定义属性的子项-不工作,javascript,jquery,Javascript,Jquery,正在尝试删除具有特定属性的父项的子项DIV元素。我有一半的工作,但与下面的代码,它没有找到孩子 HTML <div id="PremiumGiftContainer" class="PremiumGiftContainer"> <div class='message' is-vip='false'> <p>FALSE</p> </div> <div class='message' is

正在尝试删除具有特定属性的父项的子项DIV元素。我有一半的工作,但与下面的代码,它没有找到孩子

HTML

<div id="PremiumGiftContainer" class="PremiumGiftContainer">

     <div class='message' is-vip='false'>
      <p>FALSE</p>
    </div> 

    <div class='message'  is-vip='false'>
      <p>FALSE</p>
    </div>

    <div class='message'  is-vip='true'>
      <p>TRUE</p>
    </div>

</div>

<button id="button">Remove</button>

如果我删除$(“#PremiumGiftContainer”).children…部分,它会起作用,但我试图限制搜索范围,以找到正确的开关


我想做的是可以实现的吗?

可以使用

children()
不接受函数,它接受选择器。因此,您只需使用属性选择器,然后对结果元素调用
fadeOut()

还请注意,不应在元素上创建自己的非标准属性。如果要使用元素存储自定义数据,请使用
data-*
属性

$(“按钮”)。在(“单击”,函数(){
移除_元素();
})
函数remove_元素(){
$(“#PremiumGiftContainer”).children(“[data is vip=“true”]”).fadeOut();
}

假的

假的

真的


删除
@rorymcrossan right…在选择器中添加了子项,但不确定这是否重要,为什么要添加直接子项选择器
?为什么要在JSFIDLE上创建一个演示,而不是在这里创建一个首选的演示呢?@connexo只是因为Op是从
子项开始的。我怀疑这真的很重要。显示标记时,可以使用或不使用标记it@connexo那不是真的。你以为你把
find()
children()
搞混了啊!!感谢Rory,这完全有道理,而且完全没有考虑研究
children()
是否接受函数。谢谢你的帮助。没问题,很乐意帮忙
$("button").on("click", function(){
  remove_element();
})

function remove_element(){

      $('#PremiumGiftContainer').children(function () {

        $("[is-vip]").each(function(){
          if($(this).attr('is-vip')=='true'){
            $(this).fadeOut();
          }
        });

      })
}
$('#PremiumGiftContainer > [is-vip=true]').fadeOut()