0

我有以下代码在 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/

谢谢!

4

2 回答 2

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/

于 2013-08-02T00:28:19.237 回答
0

您使用的是哪个版本的 jQuery?从网站

你要它,你得到它:jQuery 2.0 已经到来!正如所承诺的,这个版本抛弃了旧的 Internet Explorer 6、7 和 8 浏览器。

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

于 2013-08-02T00:17:04.110 回答