2010-04-26 20 views
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中拋出一些隨機錯誤。林特告訴我:jQuery的動畫()的問題(語法?)

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:我使用jQuery 1.4.2從谷歌API,你可以在這裏看到的錯誤:http://meodai.ch/slider/(我知道代碼是正在建設中,但仍然)

編輯: 我試圖重現我的錯誤在只有動畫的新文件中:http://meodai.ch/slider/index2.html那裏它工作得很好!現在我迷了路。

回答

2

在你的代碼有:

options = $.extend(defaultOptions, options) 

optionsundefined,這擴展了從defaultOptions屬性jQuery對象。

defaultOptions之內的是speedeasing屬性,這些屬性覆蓋了jQuery的相同名稱的內部屬性,導致錯誤。

一個更安全的方法結合起來defaultOptionsoptions是:

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

我看到的一件事是您沒有指定要使用的緩動功能。嘗試

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

我已經追平這個,它同樣的錯誤 – meo 2010-04-26 13:11:46

0

我已經爲我的PARAMS做了一個對象options。在選項對象中,我有speed:easing:只要我重命名該選項,我的問題就解決了。但是,在我的其他測試頁面上,我沒有遇到同樣的問題,這是怎麼回事?

+1

出於某種原因,你的選擇對象實際上是jQuery對象,所以'speed'和'easing'選項會覆蓋jQuery的屬性。 – 2010-04-26 14:50:40

+0

我是怎麼做到的? :) – meo 2010-04-26 15:03:09

+1

我認爲這是'options = $ .extend(defaultOptions,options)'這行''。在你的代碼中,'options'(slider()'的參數)是undefined,我認爲jQuery將擴展解釋爲'$ .extend(defaultOptions)',它擴展並返回jQuery對象。我建議改變'options = $ .extend({},defaultOptions,options);' – 2010-04-26 16:28:16