2014-09-10 105 views
1

嗨我需要做下面的jQuery的功能,而無需點擊下一步按鈕。我試過很多了,但這些不工作的任何一個可以給我一個正確的方式來做到這一點,請jquery按鈕點擊功能自動執行時間延遲

var clickNext = $(".next_button").click(function() { 
    var imgWidth = $("#slider_box_01").width(); 
    var numImgs = 16; 
    var count = 0; 

    slideId++; 

    if (slideId == 3) { 
     slideId = 0; 
    } 
    imageSlider(imgWidth, numImgs, count, slides, slideId); 

}); 

function imageSlider(imgWidth, numImgs, count, slides, slideId) { 

    var animation = setInterval(function() { 

     var position = -1 * (count * imgWidth); 

     $('#slider_box_01').find('.slider_image').css('margin-left', position); 


     count++; 

     if (count == numImgs) { 

      count = 0; 
      $('#slider_box_01').find('.slider_image').css('margin-left', 0 ); 

      $(".slider_image").attr("src", slides[slideId]); 

      clearInterval(animation); 

     } 
    }, 80); 

此功能工作得很好,如果我點擊.next_button,但我需要做的,沒有點擊後的任何按鈕每2秒加載一次我的網頁。

+0

[WindowTimers.setInterval](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setInterval ) – melancia 2014-09-10 10:43:34

回答

1

您已經在使用setInterval(),這正是您在這裏需要的。

// When document is ready. 
$(function() { 
    // Couldn't find this variable declared anywhere in your code? 
    var slideId = 0; 

    // A function to wrap the code previously set to be executed 
    // on the click event. 
    function myFunction() { 
     var imgWidth = $("#slider_box_01").width(); 
     var numImgs = 16; 
     var count = 0; 

     slideId++; 

     if (slideId == 3) { 
      slideId = 0; 
     } 

     imageSlider(imgWidth, numImgs, count, slides, slideId); 
    } 

    function imageSlider(imgWidth, numImgs, count, slides, slideId) { 
     var animation = setInterval(function() { 
      var position = -1 * (count * imgWidth); 

      $('#slider_box_01').find('.slider_image').css('margin-left', position); 

      count++; 

      if (count == numImgs) { 
       count = 0; 
       $('#slider_box_01').find('.slider_image').css('margin-left', 0); 
       $(".slider_image").attr("src", slides[slideId]); 
       clearInterval(animation); 
      } 
     }, 80); 
    } 

    // Call the new function every 2 seconds. 
    setInterval(myFunction, 2000); 
}); 
+0

謝謝你真棒....我很新的jquery再次感謝朋友。 – Rajitha 2014-09-11 05:03:54

+0

這只是我的代碼的一部分slideId聲明瞭代碼頂部,我沒有把所有的代碼放在這裏,因爲如果我在這裏添加,問題會很複雜:D – Rajitha 2014-09-11 05:08:51

+0

沒關係。我提到它以防萬一。我很高興該解決方案爲你工作。 – melancia 2014-09-11 05:19:30

2

而沒有任何代碼變化的最簡單的解決方案:

setInterval(function(){ 
    $(".next_button").click(); 
},2000); 
+0

謝謝這也可以..但我使用波紋管之一,因爲我需要一些修改謝謝。 – Rajitha 2014-09-11 05:05:30