我有一组从外部服务器生成的无线电选择。我需要隐藏任何标签为“无”的无线电和标签。
以下是HTML的外观:
<div class="productAttributeList top-emx" style="">
<div class="productAttributeRow productAttributeConfigurablePickListSet">
<div class="productAttributeLabel">
<label for="be91177516ac23bfe33ba180741486ee">
<span class="name">Delivery Options:</span>
</label>
</div>
<div class="productAttributeValue">
<div class="productOptionViewRadio">
<ul>
<li>
<label>
<input type="radio" class="validation" name="attribute[139]"
value="" checked="checked" />
<span class="name">(None)</span>
</label>
</li>
<li>
<label>
<input type="radio" class="validation" name="attribute[139]"
value="86" />
<span class="name">Standard Shipping</span>
</label>
</li>
<li>
<label>
<input type="radio" class="validation" name="attribute[139]"
value="89" />
<span class="name">2 Day Express Shipping</span>
</label>
</li>
<li>
<label>
<input type="radio" class="validation" name="attribute[139]"
value="90" />
<span class="name">3 Day Express Shipping</span>
</label>
</li>
</ul>
</div>
</div>
试过这个,但我想我已经离开了,因为它什么也没做。
<script>
$('.productOptionViewRadio' li:first).hide();
</script>
非常感谢。
答案 0 :(得分:3)
如果包含li
标签的(None)
并非始终是.productOptionViewRadio
列表中的第一个,那么您将无法使用您放置的选择器隐藏它在一起(无论如何忽略选择器中的轻微错误)。
您可以使用:contains()
选择器,它将匹配任何或所有<label>(None)</label>
元素:
$(".productOptionViewRadio span.name:contains('(None)')").parents('li').remove();
这是一个jsFiddle Demo - 请注意它是如何删除列表中更下方的元素的(与其他答案不同,它只会删除第一个li
,而不管其<span>
}的内容)。
答案 1 :(得分:2)
你非常接近。您的选择器有错误
$('.productOptionViewRadio li:first').hide();
此外,您应该将代码包装在
中$( document ).ready(function() {
// Handler for .ready() called.
$('.productOptionViewRadio li:first').hide();
});
答案 2 :(得分:1)
对不起我在看到未经编辑的问题时最初误解了您的要求,您可以通过课程.name
选择跨度,然后您可以filter
使用条件its text equals to '(none)'
$( document ).ready(function() {
$('span.name').filter(function(){
return $.trim(($(this).text()) === '(None)'
}).parents('li').hide();
});
这些收集,然后隐藏它
{{1}}