0
$('#somediv').stop(false, true)
             .animate({marginLeft: '-=' + e.width() + 'px'}, options.speed, function(){ options.onNewSlide() })
  • e.with()640を返します
  • options.speed800を含む
  • options.onNewSlide()カスタム コールバック関数を含む

Firefox では問題なく動作します。しかし、IEでランダムなエラーがスローされていたため、jQuery-Lintでデバッグしました。リントは私にこう言います:

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 doc を確認しましたが、構文は問題ありません。

私が間違っていることを知っていますか?

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)

optionsがの場合undefined、これは のプロパティで jQuery オブジェクトを拡張しますdefaultOptions

同じ名前のjQueryの内部プロパティを上書きするプロパティとプロパティdefaultOptionsがあり、エラーが発生します。speedeasing

defaultOptionsandを組み合わせるより安全な方法は次のoptionsとおりです。

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

私が見ていることの1つは、使用するイージング関数を指定していないということです。試す

$('#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 に答える