0

问题:

调试我的站点时出现无效参数错误。该错误仅在将鼠标悬停在手风琴菜单项上时发生。经过进一步检查,我发现了可能导致此问题的代码,这在我下面的问题中。(见更新#2)。

我不知道具体是什么导致了错误,或者如何解决它.. HALPS

它突出显示的代码行是: a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now

我想不通..我讨厌 IE8 :)


更新#1

我将我的问题追溯到使用我从 ThemeForest 下载的这个管理模板预先构建的可折叠导航。

我在“Accordian Menu”的代码中发现了一些东西:

https://gist.github.com/48d7ffcc654ce24040c5

以及用于初始化菜单的这段代码:

/*
 * Accordion Menu
 */
$('.menu').initMenu();

更新#2

进一步检查显示 IE8 开发工具将其置于Locals下:

Prop "PaddingRight" String

然后我偶然发现了要点的第二个函数中的一行:

        $(this).hover(
            function() {
                $(this).animate({
                    paddingLeft:parseInt(padding_left) + parseInt(5) + "px",
                    paddingRight: parseInt(padding_right) - parseInt(5) + "px"
                }, 130);
            },
            function() {
                bc_hover = $(this).css("background-color");
                $(this).animate({
                    paddingLeft: padding_left,
                    paddingRight: padding_right
                }, 130);
            }

更新#3

这是我尝试过的代码的jsfiddle,在jsfiddle中我无法复制问题。http://jsfiddle.net/7Y68Y/6/

4

1 回答 1

4

这种错误在干预 CSS 时很常见。如果一个 CSS 属性被赋予了错误的值,IE 会抱怨它。

更新

OP忘记提及padding_left之前宣布为$(this).css('padding-left')

在这种情况下,您应该注意空字符串;例如:

$('<div />').css('padding-left') == ''
parseInt('') == NaN

有了这些知识,让我们更改分配:

var padding_left = $(this).css("padding-left");
var padding_right = $(this).css("padding-right");

要将它们转换为正确的整数:

var padding_left = parseInt($(this).css('padding-left') || 0);
var padding_right = parseInt($(this).css("padding-right") || 0);

那么让我们回到动画代码:

$(this).animate({
    paddingLeft: parseInt(padding_left) + parseInt(5) + "px",
    paddingRight: parseInt(padding_right) - parseInt(5) + "px"
}, 130);

假设原始填充也是px单位。在这种情况下,我们可以将语句简化为:

$(this).animate({
    paddingLeft: (padding_left + 5) + "px",
    paddingRight: (padding_right - 5) + "px"
}, 130);

和另外一个:

$(this).animate({
    paddingLeft: padding_left + "px",
    paddingRight: padding_right + "px"
}, 130);
于 2012-05-29T02:20:31.247 回答