【问题标题】:jquery selector not working in IE8jquery选择器在IE8中不起作用
【发布时间】:2012-04-26 12:24:20
【问题描述】:

此代码导致第二行出错 ($('boxes div.box'))

<script type="text/javascript">

    $(document).ready(function () {
        boxes = $('#boxes div.box');
        images = $('#images > div');
        boxes.each(function (idx) {
            $(this).data('image', images.eq(idx));
        }).hover(
            function () {
                boxes.removeClass('active');
                images.removeClass('active');
                $(this).addClass('active');
                $(this).data('image').addClass('active');
            });
    });

</script>

错误是“对象不支持此属性或方法”。同一页面在 Firefox 和 Chrome 中运行良好。

有人吗?

【问题讨论】:

  • 你的&lt;script&gt;标签是什么样的,你在哪里包含jQuery?
  • 在很多情况下这是一个假设...如果您知道问题的根源,您为什么要问这个问题?脚本包含了这个原因,因为细微的差异只会影响 IE,千万不要假设!

标签: javascript jquery jquery-selectors


【解决方案1】:

你需要用var关键字声明变量,否则IE不知道它们来自哪里,所以会崩溃:

var boxes = $('#boxes div.box');
var images = $('#images > div');

【讨论】:

  • 无论如何,您都应该使用 var 声明您第一次使用的变量——我认为 IE 会因为尝试使用未声明的变量而窒息。
  • 据我所知这是可行的,因为 IE 对此类事情要严格得多。在 IE 中,当脚本遇到错误时,它会停止工作,而在 FF 和 Chrome 中,它们会设法智能地解决它并继续运行脚本。
  • 我认为这是因为不声明变量意味着您将变量作为属性添加到 window 对象...但我不确定为什么 window 对象不能将 jQuery 对象作为属性?
猜你喜欢
  • 2013-03-08
  • 1970-01-01
  • 2012-07-04
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多