在jquery中隐藏列表项

时间:2013-01-08 09:23:22

标签: jquery asp.net-mvc drop-down-menu

我想在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>

2 个答案:

答案 0 :(得分:2)

.hide()不会隐藏该项目,因为.hide()的工作原理是将内联css display:none添加到该元素中。几乎所有浏览器都不允许对选项元素进行样式设置。

禁用该选项不会删除或隐藏该选项,但会使其显示为灰色且无法选择。如果您需要稍后重新启用该选项,则可以轻松切换disabled属性。

remove()完全删除了DOM中的元素,因此如果您使用此方法,则需要使用$('#mylist').append( new Option('text','value'));重新创建该元素才能再次显示该元素。

答案 1 :(得分:1)

您可以像这样使用jQuery :selected选择器:

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

这样可以更轻松地获取所选项目。

至于隐藏项目,看起来像@PassKit解释了为什么.hide()不起作用。