$(this).hide()不处理IE8中的选项元素

我的jquery代码有问题。 我想使用jquery进行级联下拉列表。 下面是我的代码。

HTML

 [Select] Company1 Company2 Company3 Company4   [Select] grp_f grp_e grp_t  

jquery代码

 $().ready(function() { $('#comp_dd').change(function() { var parent = $(this).val(); if(parent!=0) { $('#group_dd').children().each(function() { var listOfNumbers = $(this).data('parent'); if($(this).data('parent')!='-1') { var numbers = listOfNumbers.split(','); if(jQuery.inArray(parent, numbers)!=-1 ) { $(this).show(); } else { $(this).hide(); } } }); } else { $('#group_dd').children().each(function() { $(this).show(); }); } }); }); 

代码正常工作到chrome and FF但不能在IE7IE8.hide()IE7 and IE8不起作用

请帮我摆脱它。

提前致谢

答案:(由Paulo Rodrigues提供)

js代码:

 var original = $('#group_dd').clone(); $('#comp_dd').change(function() { var parent = $(this).val(); $('#group_dd').empty().append($(original).html()); if (parent != 0) { $('#group_dd').children().each(function() { var listOfNumbers = $(this).data('parent'); if ($(this).data('parent')!='-1') { var numbers = listOfNumbers.split(','); if (jQuery.inArray(parent, numbers)==-1 ) { $(this).remove(); } } }); } }); 

.hide()会将样式显示更改为none,IE不允许这样做。 所以我建议你删除这个元素。

在jquery中使用.detach() 。

DEMO

 $('#comp_dd').change(function() { var parent = $(this).val(); if (parent != 0) { $('#group_dd').children().each(function() { var listOfNumbers = $(this).data('parent'); if ($(this).data('parent') != '-1') { var numbers = listOfNumbers.split(','); if (jQuery.inArray(parent, numbers) != -1) { $(this).show(); } else { alert($(this).val()+" detached"); $(this).detach(); } } }); } else { $('#group_dd').children().each(function() { $(this).show(); }); } });​ 

你可以做$(this).css(’display’,’none’); ?

分离方式是一种更复杂的方式…如果克隆选项(所有选项)然后根据文档就绪中的onchange的值将选项附加到选择,而不是删除()你做的选项不希望与那个初始选择相关 – 在我的情况下它是国家到州,但是你的例子下拉一个选择确定下拉两个值…

 var cloneone = $('#IDVALUE option').clone(); var dropdown1_value = $('#dropdown1').val(); $('#dropdown1').change(function(){ if(dropdown1 == 'value you want here') { cloneone.appendTo('#dropdown2'); $('#dropdown2 option.OPTIONS_WITH_CLASS_YOU_WANT_TO_NOT_SHOW').remove(); } }); 

基本上有,否则如果对于您正在寻找的每个值…还有其他方法,但这似乎是最简单的,你可以以更直观的方式做到这一点,所以你不必指定其他如果,但我的目的我不需要深入挖掘,这是美国,加拿大或其他……

@pkachhia – >我找到了解决方案,对我来说在IE8.Plz工作正常,让我知道它对你有用。谢谢。

jsfiddle.net/NehaBajoria/22pW4/