2012-09-24 8 views
0

여기 제안 내가 보일러 플레이트에 따라 구성 플러그인을했다 (인터넷 익스플로러 8) 오류 :jQuery 플러그인의 setTimeout IE

http://markdalgleish.com/2011/05/creating-highly-configurable-jquery-plugins/

내가 크롬에서 원하는 플러그인이 응답하고 있지만 내가 인터넷을 얻고있다

0 : 현재 사용 http://websonalized.com/myplugin.php

ERROR MSIE IN 개발자 콘솔 (디버깅)에 플러그인을 볼 수 있습니다

익스플로러와 파이어 폭스 오류

잘못된 인수 myplugin.js, 라인 84 문자 5

오류 파이어 폭스에서 :

오류 : 쓸모의 setTimeout 호출

에서는 setTimeout (animateSlide (sliderImage), 3000) (인수 따옴표 누락?)

이다 CODE 관련 BIT

내가에서는 setTimeout 비트를 다시 작성하면 오류가 사라
... 

this.$slides.each(function(i){ 

    slide_config = $.extend({ 
     duration: 3000, 
     squares: 225, //it will display the closest 'perfect square' number of tiles 
     transition: 'linear' 
    }, $(this).data()); 

    var sliderImage = $(this).find('.slidebg'); 

    ... 

    setTimeout(animateSlide(sliderImage), 3000); 

    function animateSlide(s){ 
     console.log('ANIMATED IMAGE SLIDER ' + i); 
     console.log(s); 

     $(s).show('explode', { pieces: slide_config.squares }, 5000); 
    }; 

    ... 

:

... 

this.$slides.each(function(i){ 

    slide_config = $.extend({ 
     duration: 3000, 
     squares: 225, //it will display the closest 'perfect square' number of tiles 
     transition: 'linear' 
    }, $(this).data()); 

    var sliderImage = $(this).find('.slidebg'); 

    ... 

    setTimeout(function(){$(sliderImage).show('explode', { pieces: slide_config.squares }, 5000);}, 3000);    


    ... 

그러나 일치하지 않습니다 slide_config.squares의 값을 이 인스턴스가 아니라 값은 마지막 슬라이드 데이터로 설정 한 값입니다.

this.$slides.each(function(i){ 

    slide_config = $.extend({ 
     duration: 3000, 
     squares: 225, //it will display the closest 'perfect square' number of tiles 
     transition: 'linear' 
    }, $(this).data()); 

이것은 컨텍스트와 관련이 있다고 생각합니다. 아무도 내가 수정하고 setTimeoff를 사용해야하는 방법을 이해할 수 있습니까?

수정 난의 setTimeout 수 있어요 의미/브라우저의 FF, IE와 크롬 각 인스턴스에 대한 slide_config.squares 값 중 ​​하나를 각 슬라이드 개체가 설정 한 기본값을 동일하면서 (즉 slide_default)에 오류가 오

w

참고 : 첫 번째 코드 샘플에서는 slide_config.squares의 값이 예상 한 값입니다. 즉, 슬라이드 개체 또는 slide_config 기본값에 따라 설정됩니다. 다시 말하지만, 코드는 코드의 첫 번째 비트와 구글 크롬에서 잘 작동하도록 나타나는 것은

당신은

var slide_config = ...; 

를 작성하여 each() 콜백 내에서 지역 변수로 slide_config를 선언 할 필요가

답변

1

이 각 setTimeout 폐쇄에게 자신을 줄 것이다 변수의 복사본이 아닌, 모두가 글로벌 변수를 공유하도록하는 것입니다.

+0

@SLarks 나는 그것을하고 있었지만. 두 번째 코드 줄을 보면 $ slides.each (function (i) {각각 각 슬라이드에 해당합니다.) 그런 다음 slide_config = $ .extend ({... 뭔가 빠졌습니까? source http://websonalized.com/myplugin.js – IberoMedia

+0

@SLarks ... je je je 그래, 내가 뭔가를 잃어 버렸어. slide_config를 설정하기 전에 'var'이라는 단어를 주셔서 감사합니다. – IberoMedia