3

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

容易,对吧?

$("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>s 而一个是空的。

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

4

2 回答 2

5

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

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

演示

于 2012-08-01T18:06:52.077 回答
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

那应该处理它。

于 2012-08-01T18:07:16.910 回答