0

我在我的网站上使用 bootstrap v2.3.1,但是当我在 IE8 上测试它时,出现错误

“应用预期的数组或参数对象”。

这是引导部分:

 enter : function (t)
        {
            var n = e.fn[this.type].defaults, r = {}, i;
            this._options && e.each(this._options, function (e, t)
            {
                n[e] != t && (r[e] = t);
            }, this), i = e(t.currentTarget)[this.type](r).data(this.type);
            if (!i.options.delay || !i.options.delay.show) {
                return i.show();
            }
            clearTimeout(this.timeout), i.hoverState = "in", this.timeout = setTimeout(function ()
            {
                i.hoverState == "in" && i.show()
            },
            i.options.delay.show)
        }

和 jQuery 部分:

each: function( obj, callback, args ) {
        var name,
            i = 0,
            length = obj.length,
            isObj = length === undefined || jQuery.isFunction( obj );

        if ( args ) {
            if ( isObj ) {
                for ( name in obj ) {
                    if ( callback.apply( obj[ name ], args ) === false ) {
                        break;
                    }
                }
            } else {
                for ( ; i < length; ) {
                    if ( callback.apply( obj[ i++ ], args ) === false ) {
                        break;
                    }
                }
            }

当我跑到时callback.apply( obj[ name ], args ),我得到了那个错误,

主要问题是

e.each(this._options, function (e, t)
            {
                n[e] != t && (r[e] = t);
            }, this);

不适用于 IE8 并且发生“应用数组或参数对象预期”。

有什么可以帮我解决这个问题吗?

4

1 回答 1

0

我通过 makeArray() 解决了这个问题,如下所示:

each: function( obj, callback, args ) {
        var name,
            i = 0,
            length = obj.length,
            isObj = length === undefined || jQuery.isFunction( obj );

        if ( args ) {
            if ( isObj ) {
                for ( name in obj ) {
                    if ( $.browser.msie && '8.0' == $.browser.version ) {
                        args = $.makeArray(args);
                    }

                    if ( callback.apply( obj[ name ], args ) === false ) {
                        break;
                    }
                }
            } else {
                for ( ; i < length; ) {
                    if ( callback.apply( obj[ i++ ], args ) === false ) {
                        break;
                    }
                }
            }

但是 callback.apply( obj[ name ], $.makeArray(args)) 也适用于 Chrome,但我不确定这是否可以,如果浏览器是 IE8,那么我会这样做。

于 2013-07-22T09:22:35.760 回答