目前我正在使用 jQuery 使用以下代码隐藏/显示选择选项。
$("#custcol7 option[value=" + sizeValue + "]").hide();
这在 Firefox 中运行良好,但在其他浏览器中没有任何好处。如何在 Chrome、Opera 和 IE 中隐藏选项?
目前我正在使用 jQuery 使用以下代码隐藏/显示选择选项。
$("#custcol7 option[value=" + sizeValue + "]").hide();
这在 Firefox 中运行良好,但在其他浏览器中没有任何好处。如何在 Chrome、Opera 和 IE 中隐藏选项?
我刚刚遇到了这个,而不是一遍又一遍地克隆整个选择,我只是用span
元素替换了需要隐藏的选项并隐藏了跨度(尽管浏览器并没有在视觉上显示它们,我认为) - 你可能需要改变您的代码(如果复杂)遍历复杂逻辑的跨度。
跨度存储对 的引用,option
并在需要显示时用它替换自己。
这段代码显然可以重构和美化。
http://fiddle.jshell.net/FAkEK/12/show/
编辑#2(使用这个代替):我突然想到,不要做所有这些克隆/引用/替换废话,只需用跨度包裹选项,隐藏跨度,然后在节目中再次用选项替换跨度。 .
我认为meder提供了有效的答案,这里略有更改以反映对我有用的内容:
$.fn.optVisible = function( show ) {
if( show ) {
this.filter( "span > option" ).unwrap();
} else {
this.filter( ":not(span > option)" ).wrap( "<span>" ).parent().hide();
}
return this;
}
测试(BrowserStack 万岁):
你不知道,它在 IE 中不受支持(大概也不在 Chrome 或 Opera 中)。如果您希望它们真正不可见,则必须完全删除这些选项,然后再将其添加回来。但在大多数情况下,一个简单的disabled="disabled"
就足够了,而且比处理删除和添加选项要简单得多。
尝试分离()。如果需要,您可以稍后使用 append() 或 insertAfter() 重新附加它
要删除选项,请使用:
var opt=$("option").detach();
要显示选项,请使用:
opt.appendTo( "select" );