如果没有<option>附加</>> </select>,则隐藏<select>

时间:2012-02-17 07:56:18

标签: jquery select

如果没有附加“选项”,我想使用jquery隐藏“select”本身。

6 个答案:

答案 0 :(得分:7)

假设我已正确理解您的问题,您可以使用:empty选择器查找没有孩子的select元素:

$("select:empty").hide();

如果<optgroup>(或任何其他非选项元素子元素)中有空select元素子元素,您可能需要考虑另一个答案,因为:empty会考虑{select 1}}不是空的(它有孩子,只有option个孩子)。

此外,当:empty查找没有子节点(不仅仅是元素)的元素时,会包含文本节点(但请注意,注释节点会被忽略)。这意味着它只匹配select这样的元素:

<select></select> <!--Matches this-->
<select> </select> <!--Doesn't match this-->

答案 1 :(得分:2)

$(function() { 
    $("select").each(function() { 
        if ($(this).find("option").length == 0) {
            $(this).hide();
        }
    });
});

希望有所帮助。

答案 2 :(得分:2)

这应该有效:

$('select:not(:has(option))').hide();

答案 3 :(得分:1)

$('select').each(function () {
    var $select = $(this);
    if ($select.find('option').length === 0) {
        $select.hide();
    }
}

答案 4 :(得分:1)

不要测试它,但这应该有效:

$('select:not(:has(option))').remove();

答案 5 :(得分:1)

这样做。

$('select').each(function(){
    if (!$(this).find('option').length){ 
        $(this).hide(); 
    }
});