0
$('#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那里效果很好!现在我迷路了。

4

3 回答 3

2

在您的代码中,您有:

options = $.extend(defaultOptions, options)

何时optionsundefined,这将扩展 jQuery 对象,其属性来自defaultOptions.

defaultOptions里面是speed和属性,覆盖了jQuery内部easing的同名属性,导致报错。

一种更安全的组合方式defaultOptionsoptions

options = $.extend({}, defaultOptions, options);
于 2010-04-27T01:15:41.437 回答
0

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

$('#somediv')
  .stop(false, true)
  .animate({marginLeft: '-=' + e.width() + 'px'}, 
    options.speed, 
    'linear',
    function(){ options.onNewSlide() })
于 2010-04-26T13:10:48.590 回答
0

options为我的参数制作了一个对象。在我拥有的选项对象中speed:easing:一旦我重命名该选项,我的问题就解决了。但是我的其他测试页面上没有同样的问题是怎么来的?

于 2010-04-26T14:09:57.773 回答