使用jQuery隐藏第一个广播和标签

时间:2013-11-29 17:50:06

标签: jquery

我有一组从外部服务器生成的无线电选择。我需要隐藏任何标签为“无”的无线电和标签。

以下是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>

非常感谢。

3 个答案:

答案 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}}

DEMO