$('#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那里效果很好!现在我迷路了。
答案 0 :(得分:2)
在您的代码中,您有:
options = $.extend(defaultOptions, options)
当options
为undefined
时,这会使用defaultOptions
的属性扩展jQuery对象。
defaultOptions
内speed
和easing
属性会覆盖jQuery的相同名称的内部属性,从而导致错误。
合并defaultOptions
和options
的更安全方法是:
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:
选项对象内部解决了问题。但是,如果我在其他测试页面上没有遇到同样的问题呢?