$(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
但不能在IE7
和IE8
。 .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/