1

我想在 jquery 中隐藏列表项,但如果我这样做,它会失败,

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

但是这两个选项如何禁用和删除工作:

$(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()通过将内联 css 添加display: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 回答