jquery animate()问题(语法?)

时间:2010-04-26 12:54:59

标签: jquery jquery-lint

$('#somediv').stop(false, true)
             .animate({marginLeft: '-=' + e.width() + 'px'}, options.speed, function(){ options.onNewSlide() })
  • e.with()返回640
  • options.speed包含800
  • options.onNewSlide()包含自定义回调函数

它在Firefox中运行良好。但我用jQuery-Lint调试它,因为它在IE中抛出了一些随机错误。林特告诉我:

When I called animate(...) with your args, an error was thrown! TypeError: c.speed is not a function { message="c.speed is not a function",  more...}
You passed:  [Object {  marginLeft="-=640px"}, 800, function()]

它表示我发布的行。 我已经检查了jQuery文档,但我的语法接口确定。

你知道我做错了吗?

PS:我使用Google API中的jQuery 1.4.2,您可以在此处看到错误:http://meodai.ch/slider/(我知道代码正在构建中,但仍然存在)

编辑: 我试图在一个只有动画的新文件中重现我的错误:http://meodai.ch/slider/index2.html那里效果很好!现在我迷路了。

3 个答案:

答案 0 :(得分:2)

在您的代码中,您有:

options = $.extend(defaultOptions, options)

optionsundefined时,这会使用defaultOptions的属性扩展jQuery对象。

defaultOptionsspeedeasing属性会覆盖jQuery的相同名称的内部属性,从而导致错误。

合并defaultOptionsoptions的更安全方法是:

options = $.extend({}, defaultOptions, options);

答案 1 :(得分:0)

我看到的一件事是你没有指定要使用的缓动函数。尝试

$('#somediv')
  .stop(false, true)
  .animate({marginLeft: '-=' + e.width() + 'px'}, 
    options.speed, 
    'linear',
    function(){ options.onNewSlide() })

答案 2 :(得分:0)

我为我的参数制作了一个对象options。在我重新命名选项后,我的speed:easing:选项对象内部解决了问题。但是,如果我在其他测试页面上没有遇到同样的问题呢?