Javascript 删除已定义属性的子项-不工作
正在尝试删除具有特定属性的父项的子项DIV元素。我有一半的工作,但与下面的代码,它没有找到孩子 HTMLJavascript 删除已定义属性的子项-不工作,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 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()