Jquery show()函数在IE8中不起作用

时间:2013-08-02 00:09:37

标签: jquery css internet-explorer css3 internet-explorer-8

我有以下代码在Chrome和Firefox中运行良好,但不是IE8,或者我假设版本低于8。

<script type="text/javascript">
$(function() {
      $('div.hidden').hide();
      $('input.show:checked').each(function() {
            $('#' + $(this).val()).show();
      });
      $('input.show').click(function() {
            $('div.hidden').hide();
            $('#' + $(this).val()).show();
      });
});
</script>

起初我认为这可能是由:checked选择器引起的,所以我将代码更改为以下内容:

<script type="text/javascript">
$(function() {
      $('div.hidden').hide();
      $('input.checked').each(function() {
            $('#' + $(this).val()).show();
      });
      $('input.show').click(function() {
            $('div.hidden').hide();
            $('#' + $(this).val()).show();
      });
      $("input[type='checkbox']").click(function() {
            $(this).parent().toggleClass("checked", this.checked);
      });
});
</script>

没有运气,所以我尝试使用IE9.js然后IE8.js,两者都没有效果。在那之后,我又回到了选择器的鬼混,并试图交换它:

$('input.checked').each(function() {

有了这个:

$('input[checked="checked"]').each(function() {

再次,我空手而归,所以现在我开始认为它可能不是选择器。我在这里搜索过,当然还有谷歌,但还是没能想出任何东西。任何人都可以告诉我为什么我的代码不能在IE8中工作?这也是一个JSFiddle:http://jsfiddle.net/DrydenLong/bP4Uf/

谢谢!

2 个答案:

答案 0 :(得分:2)

您的复选框有display: none。这似乎是它在IE8中不起作用的原因。

一种可能的解决方法是将您的点击事件直接绑定到标签,例如:

$('.show_label').click(function() {
    var $input = $(this).find('input');
    $('div.hidden').hide();
    $('#' + $input.val()).show();
});

http://jsfiddle.net/thirtydot/bP4Uf/5/

答案 1 :(得分:0)

您使用的是哪个版本的jQuery?来自website

  

你问过它,你明白了:jQuery 2.0已经到了!正如所承诺的,这个版本留下了旧的Internet Explorer 6,7和8浏览器。

您需要使用版本1.x来获得对IE8及更低版本的支持。