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( jQueryで <option /> が1つしかない場合は <select /> を無効にするから取得):

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

しかし、それを機能させることはできません..ページに同じクラスのドロップダウンが複数あります(したがって、IDではないクラスをターゲットにする理由)。新しいバージョンであり、もう使用されていないと確信しているため、に変更しattrました..propattr

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;
});

上記の両方のスニペットは、選択に 2 つ以上のオプションがある場合に自動的に設定さdisabledれます。falseそれが意味のある違いを生む場合は、このスニペットを使用して、>= 2 オプションで選択を自動的に再度有効にすることなく、< 2 オプションで選択を無効にすることができます。

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

フィドル

于 2013-03-04T01:26:52.047 に答える