【问题标题】:jQuery.animate({left: 0}) error in IE8IE8 中的 jQuery.animate({left: 0}) 错误
【发布时间】:2011-08-08 04:01:45
【问题描述】:

在 IE8 中,$liElement.animate({left:0},500); 行以“对象不支持此属性或方法”错误中断页面。 $liElement 是我从 $('#mydiv li').eq(0); 得到的 jQuery 对象

$liElement.animate({},500); 不会导致错误。

我正在使用 jQuery 1.5.1。我该如何解决这个问题?

【问题讨论】:

  • 它是否适用于其他非零值?
  • @Diodeus,不 - 它不适用于任何值。 right 也没有
  • 您的<li> 元素是否绝对定位?
  • @Frederic Hamidi,不,但它嵌套在绝对定位的 div

标签: javascript jquery internet-explorer internet-explorer-8 jquery-animate


【解决方案1】:

要找到它的源头,您必须在调试器下运行此代码并找出 (1) 它在抱怨哪个对象 (2) 它在抱怨哪个属性或方法。然后,您可以向后工作以查看谁的假设不正确。或许您可以发布一个jsfiddle,其中包含最小的测试用例?

【讨论】:

    【解决方案2】:

    您需要使元素绝对或相对定位。否则 left 的值将被忽略。

    【讨论】:

    • 我尝试在通话前加上$liElement.css('position','relative')liElement.css('position','absolute')。都没有修复错误
    【解决方案3】:

    将调用包装在 try catch 中:

    try {
        // animate  
    } catch (e) {
        // handle error
    }
    

    【讨论】:

    • Rule #43: 空的catch 块是邪恶的
    • 除非@Chris 打算在 catch 块中放置一些东西,例如 console.log(e) 或调试器语句...
    • @Dan D,你可能是对的,如果@Chris 这样做,我肯定会取消反对票。但是wrap the call in a try catch 并没有给我太多希望。
    • @Frederic,我应该知道发布问题的人想在失败时做什么吗?这甚至不是问题。
    • @Frederic,我说使用 try catch。我不是在写代码。问题也没有说明应该如何处理错误。但这确实解决了这个问题。如果你知道的更好,为什么不启发我们。
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多