jQuery在Internet Explorer 8中不起作用("this"返回DOM而不是jq)

Ter*_*ion 9 javascript jquery internet-explorer internet-explorer-8

我面临一个奇怪的问题,找不到任何解决方案.

jQuery(任何版本,从1.7.*到1.10.*)在Internet Explorer 8中失败.所有插件(来自bootstrap)和jQuery库都出现错误:

Object不支持此属性或方法

调试器截图:

调试器截图

挖掘插件代码,如下所示:

$.fn.alert = function (option) {
    return this.each(function () {
        //...
    })
}
Run Code Online (Sandbox Code Playgroud)

显示问题:此关键字指向HTMLDomObject,而不是jQuery对象.什么会导致这种奇怪的错误?

只有在Internet Explorer 8中!

Ter*_*ion 0

我找到了一段代码,导致了这个问题。我仍然不明白,它如何以这种方式破坏所有 jQuery 以及为什么它完全破坏(同样,它在除 Internet Explorer 8 之外的所有浏览器中都能完美运行),但是将 for in迭代器更改为 $.each()使错误消失。

for (var i in $postsPortions) {
    var $p = $($postsPortions.get(i));
    var offset = $p.offset();
    if (offset && Math.abs(offset.top - scrollTop) < 100) {
        var year = $p.data('year');
        var season = $p.data('season');
        window.location.hash = year + '/' + season;
        $milestones.removeClass('active');
        $milestones.filter('.year_' + year + '.season_' + season).addClass('active');
        return;
    }
    if (i >= ($postsPortions.length - 1)) return;
}
Run Code Online (Sandbox Code Playgroud)

  • 看看[为什么在数组迭代中使用“for…in”是一个坏主意?](http://stackoverflow.com/questions/500504/why-is-using-for-in-with-array-iteration -这样的坏主意)也许吧。如果您立即发布该代码,我们可以为您提供帮助。 (5认同)