1

嘿,所以我有这个 HTML(通过 PHP 循环输出):

<select class="dropdown" id="pa_genre" name="attribute_pa_genre">
    <optgroup label="Choose an option:"></optgroup>
    <option value="sport" selected="selected">Sport</option>
</select>

还有这个 jQuery(取自Disable a <select /> if there is only one <option /> with jQuery):

$(document).ready(function(){
    var $sca = $("select.dropdown");
    if ($sca.find("option").length <= 1) {
        $sca.prop('disabled', true);
    }
});

但不能让它工作..我在页面上确实有多个具有相同类的下拉列表(因此为什么定位类而不是 id)。我将其更改为attrprop因为我确定它是新版本并且attr不再使用了..

4

1 回答 1

1

由于您有多个输入,因此您需要某种形式的迭代来disabled相应地设置它们的属性。

$("select.dropdown").prop('disabled', function() {
    return $('option', this).length < 2;
});

小提琴

上面的效果与以下相同:

$("select.dropdown").each(function() {
    this.disabled = $('option', this).length < 2;
});

上面的两个摘要都将自动设置disabledfalseSelect具有2个或更多选项时。如果这产生了有意义的差异,您可以使用此代码段禁用具有 < 2 个选项的选择,而无需自动重新启用具有 >= 2 个选项的选择:

$("select.dropdown").each(function() {
    if ( $('option', this).length < 2 ) this.disabled = true;
});

小提琴

于 2013-03-04T01:26:52.047 回答