1

jqueryでリストアイテムを非表示にしたいのですが、このようにすると失敗します。

$(Name + "-myList option[value=" + selectedItem + "]").hide(); //fails

しかし、どうしてこれらの2つのオプションが機能を無効にして削除するのでしょうか。

$(Name + "-myList option[value=" + selectedItem + "]").attr("disabled", "disabled");

$(Name + "-myList option[value=" + selectedItem + "]").remove();

これが私のリストコードです

<select id="myList" class="DropDownList Test" name="List">                                           
    <option value="selectid" selected="selected">--Please Select--</option> 
    <option value="test1">a</option> 
    <option value="test2">b</option> 
    <option value="test3">c</option>               
</select>
4

2 に答える 2

2

.hide().hide()インラインcssdisplay:noneを要素に追加することで機能するため、アイテムを非表示にしません。ほとんどすべてのブラウザでは、オプション要素のスタイルを設定できません。

オプションを無効にしても、オプションが削除または非表示になることはありませんが、灰色で表示され、選択できなくなります。後でオプションを再度有効にする必要がある場合は、無効な属性を簡単に切り替えることができます。

remove()DOMから要素を完全に削除するため、このアプローチを使用する場合は、要素を$('#mylist').append( new Option('text','value'));再度表示するためにで再作成する必要があります。

于 2013-01-08T09:28:05.867 に答える
1

次のようにjQuery :selectedセレクターを使用できます。

$(Name + "-myList option :selected").attr("disabled", "disabled");
$(Name + "-myList option :selected").remove();

これにより、選択したアイテムを簡単に取得できます。

アイテムを非表示にすることに関しては、@PassKitがなぜ機能しないのかを説明しているよう.hide()です。

于 2013-01-08T09:25:34.347 に答える