我尝试使用.hide()在一个下拉框中隐藏一些选项。这在firefox和chrome中运行得很好,但在IE和Safari中就不行了。我的原始代码更复杂,但我已经将其缩小到以下范围。
我尝试了几种组合,但都不起作用。
.hide()可以工作,但由于某种原因,选项标记内的内容不能工作。
有人能帮帮我吗?这快把我逼疯了。非常感谢您能抽出时间来帮助我们!
下面是我的jscript:
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".wrapper1").hide();
});
</script>
下面是HTML:
<label for="prodName">Product Name:</label>
<input type="text" name="prodName" /><br />
<label for="candy">Candy:</label>
<select name="candy" id="candy">
<option value="0" class="blank" selected="selected"></option><!-- PHP and JS validators should not allow "0" here. User should be prompted to select something. -->
<option value="1" class="wrapper1">Hide this 1</option>
<option value="2" class="wrapper1">Hide this 2</option>
<option value="3" class="wrapper2">Show this 1</option>
</select><br />
发布于 2013-06-18 07:20:51
这将会起作用..将.show更改为.showOption和.hideOption。然而,这在IE中仍然有些糟糕,因为在firefox中,你可以让它隐藏一个被选中的选项。因此,如果"Select One“显示并隐藏。Firefox仍然会显示“选择一个”。
$.fn.showOption = function() {
this.each(function() {
if( this.tagName == "OPTION" ) {
var opt = this;
if( $(this).parent().get(0).tagName == "SPAN" ) {
var span = $(this).parent().get(0);
$(span).replaceWith(opt);
$(span).remove();
}
opt.disabled = false;
$(opt).show();
}
});
return this;
}
$.fn.hideOption = function() {
this.each(function() {
if( this.tagName == "OPTION" ) {
var opt = this;
if( $(this).parent().get(0).tagName == "SPAN" ) {
var span = $(this).parent().get(0);
$(span).hide();
} else {
$(opt).wrap("span").hide();
}
opt.disabled = true;
}
});
return this;
}
发布于 2011-12-04 14:39:26
你是对的。有些浏览器就是不让你隐藏option
元素。您可能需要删除它们。
不过,也许更好的(或者至少是另一种)可能是禁用它们。
$(".wrapper1").prop('disbled', true);
发布于 2011-12-04 14:49:58
您必须删除option
元素..许多浏览器都不支持使用display:none
隐藏它们。
隐藏
var elems = $(".wrapper1").remove();
显示
$('#candy').append(elems);
https://stackoverflow.com/questions/8373735
复制相似问题