2014-02-13 3 views
0

다음은 작동하지만 '$ ('. js-slideshow span ')'을 클릭하면 'playSlideshow()'가 중지됩니다.클릭 이벤트 후 jQuery 함수 실행 중지

$("img.clickable").click(function(e){// showing and hiding property images 
    e.stopPropagation(); 
    $('.js-slideshow span').delay(500).fadeIn(); 
    var $window = $(window); 
    var $windowWidth = $(window).width(); 
    var clickableImage = $(this); 
    var clickableImageRightPx = clickableImage.css('right'); 
    var clickableImageRightInt = parseInt(clickableImageRightPx , 10); 

    if (clickableImageRightInt == -108) { 
     playSlideshow();    
    } 

}); 

$('.js-slideshow span').click(function(){ 
    $(this).fadeOut(function(){ 
     $('.showImg').removeClass("showImg"); 
      // stop playSlideshow(); 
    }); 
}); 

function playSlideshow(){ 

    $(".js-slideshow > img:gt(0)").delay(500).fadeOut(); 

    setInterval(function() { 
     $('.js-slideshow > img:first') 
     .fadeOut(1000) 
     .next() 
     .fadeIn(1000) 
     .end() 
     .appendTo('.js-slideshow');}, 3000); 

     } 

} 
+1

에서 그것을 중지 playSlideshow 방법 및 사용자 clearInterval()의 간격 참조를 사용합니다. 'playSlideshow()'가 무엇인지에 대해 더 많은 정보를 제공해주십시오. – smdrager

+1

공유'playSlideshow' –

+0

@smdrager와 동의하십시오. 이것은'playSlideshow'가'setInterval'을 사용하여 어떤 간격으로 다른 함수를 호출하는 것이 가능 합니다만,'playSlideshow'가 아니라면 우리는 알 수 없습니다. – Zhihao

답변

1

는 함수 외부에서 기능을 중지 할 방법이없는 js-slideshow span 클릭 핸들러

$('.js-slideshow span').click(function() { 
    clearInterval(slideshowInteval) 
    $(this).fadeOut(function() { 
     $('.showImg').removeClass("showImg"); 
     // stop playSlideshow(); 
    }); 
}); 

var slideshowInteval; 

function playSlideshow() { 

    $(".js-slideshow > img:gt(0)").delay(500).fadeOut(); 

    slideshowInteval = setInterval(function() { 
     $('.js-slideshow > img:first') 
      .fadeOut(1000) 
      .next() 
      .fadeIn(1000) 
      .end() 
      .appendTo('.js-slideshow'); 
    }, 3000); 

}