3

私はストアフロントパッケージを扱っており(コアファイルを編集するオプションがありません)、ユーザーが名刺に必要な表と裏を選択するためのドロップダウンメニューがあります。一部のカードにはオプションが1つしかないため、オプションが1つしかない場合、クライアントはドロップダウンメニューを非表示にしたいと考えています。

簡単ですよね?

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

それは機能しますが、問題は、システムが<option>ドロップダウンの一部に空白を生成することがあるため、実際には2つのオプションがありますが、「実際の」オプションは1つだけです。

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

基本的に、1つまたは2つ<select>しかなく、1つが空であるsを選択する必要があります。<option><option>

そのような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 に答える