0

リストの最初のフィールドをクリックして、選択したすべての項目をクリアできる複数選択リストを作成しようとしています (これは空の値、つまり "" です)。

私はこのjqueryを使用しています:

    $("#States").change(function () {
    var sValue = $(this).val();
    if (sValue == "") {
        $(" option:selected").removeAttr("selected");
    }
    return false;       
});

問題は、これにより、他のすべての複数選択リスト ボックスの項目も選択解除されることです。特定のリストをターゲットにするにはどうすればよいですか? (おそらく非常に単純な質問ですが、これはjqueryへの私の最初の進出です)。

4

6 に答える 6

1

使用できます$(selector, context)

$("option:selected", this).prop("selected", false);

val複数の選択要素のメソッドは、文字列ではなく配列を返すため、配列を空の文字列と比較しています。

于 2013-03-07T15:54:49.777 に答える
1

$(this)選択したすべてのオプションをターゲットにする代わりに、次を使用します。

$("option:selected", this).prop("selected", false);
于 2013-03-07T15:54:50.143 に答える
1

コンテキストをセレクターに追加します。下記参照、

$("option:selected", this).removeAttr("selected");

jQuery の最新バージョンを使用.propしている場合に使用します。詳細については、他の回答を参照してください。

于 2013-03-07T15:54:52.227 に答える
1

使用している要素を参照する必要があります。

if (sValue == "") {
    $('option:selected', this).removeAttr("selected");
}
于 2013-03-07T15:54:57.940 に答える
0

次のコードが機能すると思います。

$("#States").change(function () {
    var sValue = $(this).val();
    if (sValue == "") {
        $(this).find("option:selected").removeAttr("selected");
    }
    return false;       
});
于 2013-03-07T15:56:12.193 に答える
0

jQuery セレクターを拡張することで、さらにターゲットを絞ることができます。

$("#States option:selected").removeAttr("selected");
于 2013-03-07T15:54:20.110 に答える