2012-06-16 4 views
2

입니다.이 스크립트가 있고 $ play 변수를 함수로 호출 할 수 있어야합니다. 즉, 설정 간격을 다시 시작하면 일시 중지 함수가 제대로 작동하지만 클릭 재생시 다시 시작할 수는 없습니다.함수를 호출하는 var가

if(itemsCount > 1) { 
     // addNavigation 
     var $navPlay= $('body').find('.play'), 
     $navPause= $('body').find('.pause'), 
     $imgWrapper= $rgGallery.find('div.rg-image'), 
     $play = window.setInterval(function(){ 
      _navigate('right'); 
     }, 500); 

     $navPlay.on('click', function(event) { 
      $play; 
      return false; 
     }); 

     $navPause.on('click', function(event) { 
      clearInterval($play); 
      return false; 
     }); 
    } 
}, 
+0

여기 '$ play'는 함수가 아니며 설정 한 간격의 식별자입니다. – haylem

+0

식별자를 사용하여 함수를 호출하는 방법은 무엇입니까? –

+0

당신은하지 않습니다. 간격은 setInterval을 호출 할 때 설정되었고, 그의 간격은 이제 500ms마다 호출되어'_navigate'를 실행합니다. 원하는 시점에이 간격을 다시 활성화하는 방법을 원한다고 가정합니다 (여기에 클릭이 발생할 때). – haylem

답변

2

유스 케이스와 비슷한 것을 복제하기위한 예제를 만들 시간은 없었지만이 라인을 따라 가야 할 것이 있습니다. 당신이 함수로 변수를 사용하려면

function starter() { 
     return (window.setInterval(function() { 
      _navigate('right'); 
     }, 500)); 
    } 

    // stuff 
    if(itemsCount > 1) { 
      // addNavigation 
      var $navPlay  = $('body').find('.play'), 
       $navPause  = $('body').find('.pause'), 
       $imgWrapper  = $rgGallery.find('div.rg-image'), 
       $play   = starter(); // auto-start (set to null if not desired) 

      $navPlay.on('click', function(event) { 
       if (!$play) { // probably don't want to set this twice 
        $play = starter(); 
       } 
       return false; 
      }); 

      $navPause.on('click', function(event) { 
       if ($play) { 
        clearInterval($play); 
        $play = null; 
       } 
       return false; 
      }); 
    }   
    // stuff 
+0

감사합니다. 완벽한 5 분을 기다려야 만합니다. –

+0

내 길은 여전히 ​​변수를 사용할 수 있습니다. :) 그러나 훌륭한 대답입니다! – Shawn31313

+0

@ Shawn31313 : 약간의 위험이 있습니다 :'$ play'를 호출하면 이전의'timeout'을 오버라이드 할 것입니다. 그래서 여러분이 전에 손을 사용하지 않았다면 그것을 풀 수 없을 것입니다 (프로그래머 에러가 될 것입니다. 그 중 하나는 내 것으로 복귀를 포착하지 못하고 어느 쪽도 공개 할 수 없기 때문에 내가 선호하는 방식이다). – haylem

2

그럼 그냥 그냥 일반 함수처럼 괄호 안에 변수를 추가 할 수 있습니다 function(){}

if (itemsCount > 1) { 
    // addNavigation 
    var timeout, 
     $navPlay = $('body').find('.play'), 
     $navPause = $('body').find('.pause'), 
     $imgWrapper = $rgGallery.find('div.rg-image'), 
     $play = function() { 
      timeout = window.setInterval(function() { 
       _navigate('right'); 
      }, 500); 
     }; 

    $navPlay.on('click', function (event) { 
     $play(); 
     return false; 
    }); 

    $navPause.on('click', function (event) { 
     clearInterval(timeout); 
     return false; 
    }); 
} 

를 사용하고 잘 작동합니다. 또한 전 세계적으로 할 수있는 별도의 변수를 타임 아웃 할 수 있습니다.

관련 문제