0

選択されたオプションにbox_B基づいて、optgroup のラベル名を取得するにはどうすればよいですか?box_A

次の関数を使用してbox_A親ラベルに警告しようとしましたが、それを取得できませんでした。に変更したvar label = $(e).attr('value');場合、オプション値は表示されます。

function showLabel(e){ 
    if($(e).attr('checked')=='checked'){
         var label = $(e).parent().attr('label');
         alert(label);
    }
}

選択ボックス:

<select id="box_A" multiple="multiple">
    <optgroup label="Asia: Japan">
        <option value="1 - Toyota">1 - Toyota</option>
        <option value="2 - Honda">2 - Honda</option>
    </optgroup>
    <optgroup label="Europe: German">
        <option value="3 - Mercedes">3 - Mercedes</option>
    </optgroup>
</select>

<select id="box_B" multiple="multiple">
    <optgroup label="1 - Toyota">
        <option value="1A - Camry">1A - Camry</option>
        <option value="1B - Yaris">1B - Yaris</option>
    </optgroup>
    <optgroup label="2 - Honda">
        <option value="2A - Civic">2A - Civic</option>
    </optgroup>
    <optgroup label="3 - Mercedes">
        <option value="3A - SL320">3A - SL320</option>
    </optgroup>

</select>

関数を呼び出します。

$(document).ready(function() {

    $("#box_A").multiSelect({}, showLabel);

}

ありがとう。

4

1 に答える 1

0

オプションがクリックされたときに が呼び出され、jQuery イベント オブジェクトが渡されると仮定するとshowLabel、次のように使用できます。

function showLabel(e){ 
    var $target = $(e.target);
    if($target.is(':selected')){
         var label = $target.closest('optgroup').attr('label');
         alert(label);
    }
}

編集:

あなたが投稿したプラグインを見てみると、上記の私の仮定が間違っていたようです。showLabeljQuery イベントが渡されるのではなく、クリックされたアイテムの jQuery オブジェクトが渡されます。これもチェックボックスであり、オプションではありません。代わりにこれを使用してみてください:

function showLabel($target){ 
    if($target.is(':checked')){
         var label = $target.closest('optgroup').attr('label');
         alert(label);
    }
}
于 2013-03-25T03:47:00.833 に答える