2010-04-26 4 views
0
$('#somediv').stop(false, true) 
      .animate({marginLeft: '-=' + e.width() + 'px'}, options.speed, function(){ options.onNewSlide() }) 
  • e.with() 수익률 640
  • options.speed 800
  • options.onNewSlide()는 사용자 정의 콜백 함수

그것은 파이어 폭스에서 잘 작동이 포함되어 포함되어 있습니다. 하지만 IE에서 임의의 오류가 발생하여 jQuery-Lint로 디버깅했습니다. 린트는 나에게 말한다 :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 doc을 확인했지만 문법이 잘 돌아 왔습니다.

내가 뭘 잘못하고 있는지 알아?

PS : 나는 구글 API에서 jQuery를 1.4.2 사용 여기에 오류 볼 수 있습니다 http://meodai.ch/slider/ (나는 코드가 건설 중이다 알고 있지만, 여전히)

편집 : 내 오류를 재현하기 위해 노력했다 그냥 애니메이션이있는 새 파일에 : http://meodai.ch/slider/index2.html 아주 잘 작동합니다! 이제 나는 길을 잃었다.

답변

2

당신은이 :

options = $.extend(defaultOptions, options) 

optionsundefined이며,이 defaultOptions의 특성을 가진 jQuery 오브젝트를 확장합니다.

defaultOptions 내에는 speedeasing 속성이있어 동일한 이름의 jQuery 내부 속성을 덮어 쓰며 오류가 발생합니다.

결합하기위한 안전한 방법 defaultOptionsoptions은 다음과 같습니다

이미이 묶여
0

내가 보는 한 가지는 당신이 사용하는 이징 기능을 지정하지 않는다는 것입니다. 시도하십시오

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

options = $.extend({}, defaultOptions, options); 
,이 옵션 개체를 몇 가지 이유로 같은 오류 – meo

0

나는 내 params에 객체 options을 만들었습니다. 옵션 객체 안에는 speed:easing:이 있었는데, 문제가 해결되면 해당 옵션의 이름이 변경되었습니다. 하지만 다른 테스트 페이지에서 동일한 문제가 발생하지 않는 이유는 무엇입니까? 코드에서

+1

실제로 jQuery 오브젝트이다 않기 때문에'speed' 및 'easing' 옵션이 jQuery의 프로퍼티를 오버로드합니다. –

+0

어떻게 그 일을 처리 했습니까? :) – meo

+1

이 줄은'options = $ .extend (defaultOptions, options)'라고 생각합니다. 귀하의 코드에서'options' ('slider()'의 인수는'undefined'입니다. jQuery는 확장을'$ .extend (defaultOptions)'로 해석하고 jQuery 객체를 확장하고 반환한다고 생각합니다. 이것을'options = $ .extend ({}, defaultOptions, options);로 변경하는 것이 좋습니다. –