Jquery 在选择元素中隐藏选项,不在IE中工作?
可能重复:Jquery 在选择元素中隐藏选项,不在IE中工作?,jquery,internet-explorer,select,Jquery,Internet Explorer,Select,可能重复: 正如你在下面看到的,我有两个选择元素。第一个有两个值,1.4和1.7。根据选择的选项,我希望禁用第二个select元素中的某些选项。它在chrome上运行得非常好,但IE是个婊子(像往常一样!) 你知道怎么了吗 <p> <label style="width: 155px; display: inline-block;">Height</label> <select name="height"> <
正如你在下面看到的,我有两个选择元素。第一个有两个值,1.4和1.7。根据选择的选项,我希望禁用第二个select元素中的某些选项。它在chrome上运行得非常好,但IE是个婊子(像往常一样!) 你知道怎么了吗
<p>
<label style="width: 155px; display: inline-block;">Height</label>
<select name="height">
<option value="1.4">1.4</option>
<option value="1.7">1.7</option>
</select>
</p>
<p>
<label style="width: 155px; display: inline-block;">Amount</label>
<select name="slanor">
<option class="four" value="2">2</option>
<option class="four seven" value="3">3</option>
<option class="seven" value="4">4</option>
</select>
</p>
<script>
$(document).ready(function() {
check();
$('select[name=height]').change(function() {
check();
});
function check() {
var slanor = $('select[name=slanor]');
var currHeight = $('select[name=height]').val();
if(currHeight == '1.4') {
slanor.find('option').hide();
slanor.find('.four').show();
} else {
slanor.find('option').hide();
slanor.find('.seven').show();
}
}
});
</script>
高度
1.4
1.7
数量
2.
3.
4.
$(文档).ready(函数(){
检查();
$('select[name=height]')。更改(函数(){
检查();
});
函数检查(){
var slanor=$('select[name=slanor]');
var currHeight=$('select[name=height]')。val();
如果(currHeight='1.4'){
slanor.find('option').hide();
slanor.find('.four').show();
}否则{
slanor.find('option').hide();
slanor.find('.seven').show();
}
}
});
IE中不存在选择中隐藏的选项的概念。您必须手动删除并重新添加条目,这可能会带来一些不便
另一个解决方案是也禁用元素:
slanor.find(option).hide().prop('disabled', true);
这将在所有支持该选项的浏览器中隐藏该选项,但在IE中禁用该选项,这意味着该选项仍然可见,但在视觉上与其他选项不同,并且不可选择
然而:如果您的问题与您所描述的完全一样,并且您的脚本只有两个不同的选项,最简单的解决方案可能是隐藏
和完全显示
两个不同的下拉列表,具体取决于选择的选项。调用.hide()在jQuery中,向元素添加display:none。我怀疑用这种方式隐藏选项是否是标准HTML
您可以使用以下代码:
slanor.empty();
if (currHeight == '1.4') {
slanor.append($('<option'>).val('2').text('2'));
slanor.append($('<option'>).val('3').text('3'));
}
else {
slanor.append($('<option'>).val('3').text('3'));
slanor.append($('<option'>).val('4').text('4'));
}
slanor.empty();
如果(currHeight='1.4'){
slanor.append($('选项标记不支持css显示属性。show()/hide()就是这样做的。您最好根据需要删除并重新创建选项。或者,我想您可以将它们附加到另一个隐藏对象,并在需要完全成形的选项时将其拉回来
所以你会有类似的
$("option").appendTo($("#myhiddenselect"));
$(".four").appendTo($("#myvisibleselect"));
什么不起作用?它是否获得了正确的高度值?(运行console.log(currHeight)
以找出原因。)请停止标记您的标题。您在这里已经快两年了!嗯,是的,这很有效。我尝试将其设置为禁用,但在IE 7/6中似乎不起作用。我希望至少支持IE 7。我想剩下的唯一选项是有两个选择框。谢谢!您可以在这篇文章中找到所需的答案:-