Internet Explorer中的jquery show()/ hide()问题?

以下html代码适用于Firefox,但由于某种原因在IE中失败(Label2未显示)。 这是一个错误还是我错过了什么?

任何帮助,将不胜感激。

       jQuery(document).ready(function(){ function setVis(){ var val = $("#check").is(":checked"); if (val) $("#g_1").show(); else $("#g_1").hide(); } setVis(); $("#check").change(setVis); });             

原因:

根据MSDN, 更改事件是

…在提交内容时触发,而不是在值发生变化时触发。 例如,在文本框中,在用户键入时不会触发此事件,而是在用户通过保留具有焦点的文本框提交更改时触发。

复选框的行为类似:在IE中,事件不会触发,直到从元素中移除焦点(尝试它:单击然后选中复选框,行为与预期一致)。 Firefox显然不尊重这种区别。

解:

使用click事件处理程序而不是change

  $("#check").click(setVis); 

…并且各行为应该在浏览器中保持一致。

请记住,在选中复选框后会触发onchange事件,然后保留复选框 。 您是否尝试检查它,然后单击文档上的其他位置?

您可能希望在jQuery中使用click和keypress事件(通过单击和空格键检查框)。

你有没有理由在你的文档准备段落中声明/定义一个函数,而不是在它之外?

还有一个编辑; 我可以推荐这个更时尚的代码:

 jQuery(document).ready(function(){ $("#g_1").hide(); $("#check").change(function() { $("#g_1").toggle(); }); }); 

将.change事件更改为.click事件。 两个浏览器的结果是一样的。 在IE中单击复选框时,未出现模糊。