jQuery选择下拉选项,只有一个非空白选项

时间:2012-08-01 18:02:20

标签: jquery html html-select

我正在处理店面包(所以我没有编辑核心文件的选项),我们有下拉菜单来选择用户想要名片的正面和背面。有些卡只有一个选项,所以如果只有一个选项,客户想要隐藏下拉菜单。

简单,对吧?

$("select").each(function(){
    var count = $(this).children("option").length;
    if ( count == 1 ) {
        // there's only one option, do something
    }
});

这样可行,但问题是系统有时会为某些下拉列表生成空白<option>,因此实际上有两个选项,但只有一个“真实”选项:

<select>
    <option></option>
    <option value="Something">A real option</option>
</select>

基本上,我需要选择<select>只有一个<option>或两个<option>且一个只是空的。

我无法完全理解这种if语句的逻辑,所以如果有人有任何建议,我们将不胜感激。

2 个答案:

答案 0 :(得分:5)

您可以使用not方法和:empty选择器:

$("select").each(function(){
    var count = $(this).find("option").not(':empty').length;
    if ( count == 1 ) {
        alert('okay')
    }
});

DEMO

答案 1 :(得分:0)

改变你计算它们的方式:

$('select').each(function() {
    var count = 0;
    $(this).children('option').each(function() {
        if ( $(this).text() ) // true if not empty
        {
            ++count;
        }
    });
    if ( count == 1 ) // count only includes non-empty options

应该处理它。