2013-03-11 21 views
0

我有一個像單選按鈕這樣的5個元素組,我想設置檢查attr給他們每個人一個延遲。這是什麼錯誤的循環在jQuery中?

<input type="radio" name="slider" id="slide1"> 
<input type="radio" name="slider" id="slide2"> 
<input type="radio" name="slider" id="slide3"> 
<input type="radio" name="slider" id="slide4"> 
<input type="radio" name="slider" id="slide5"> 

這個腳本添加上頭:

<script> 
    $(document).ready(function(){ 
     for(var i=1; i<6; i++){ 
      $('input[name=slider]:nth-child(i)').attr('checked', ').delay(500); 
     } 
    }) 
</script> 

但不選擇任何。循環中我的錯誤是什麼?

+3

除? – JJJ 2013-03-11 08:38:33

+0

使用.each $('input [name = slider]')。each(function(){// your code here}) – 2013-03-11 08:40:20

+0

@ user2063626這裏不需要 – 2013-03-11 08:41:16

回答

1

我認爲這可能是你所追求的:

http://jsfiddle.net/

$(document).ready(function(){ 
     for(var i=1; i<6; i++){ 
      $('input[name=slider]:nth-child('+i+')').delay(i*500).show(function() { $(this).prop('checked', true)}); 
     } 
    }) 

說明

當你運行這個循環中,每個元素都被賦予了延遲顯現。 delay-> show會立即爲每個元素運行。出於這個原因,你需要不斷增加延遲,以使它看起來是同步連接在一起的。第一個延遲爲500ms,第二個爲1s,第三個爲1.5s等.調用中的函數是一個回調函數,它告訴複選框添加checked = true屬性。

根據您的意見,以@Juhana:我會說,這將是你最好的選擇(或它的一個輕微的修改):

http://jsfiddle.net/vSFtM/5/

$(document).ready(function(){ 
    setInterval(function() { nextIteration(); }, 500); 
    var current_index = 1; 
    var total = 5; 
    function nextIteration() { 
     $('#slide'+current_index).prop('checked', true); 
     current_index = current_index + 1 > total ? 1 : current_index + 1; 
    } 
}) 
+1

也是Juhana在評論中所說的。 – sberry 2013-03-11 08:39:39

+1

它仍然無法按預期工作。最後'.delay()'不會做OP認爲它做的事情。 – JJJ 2013-03-11 08:40:29

+0

我做到了,但只是第五個元素檢查和循環不正常工作,以檢查其他人 – bobsilon 2013-03-11 08:42:17

1

.delay()由jQuery的動畫只用隊列,並且它實際上不會暫停腳本執行。原始代碼依次(立即)檢查每個單選按鈕,並暫停其動畫隊列(爲空)0.5秒。

這裏有一個對任何數量的單選按鈕的工作原理,並沒有從.delay()開銷有:

$(document).ready(function() { 
    $('input[name=slider]').each(function (index) { 
     var $this = $(this); 
     setTimeout(function() { 
      $this.prop('checked', true); 
     }, 500 * index); 
    }); 
}); 

演示:http://jsfiddle.net/kmJkP/從丟失的報價你的意思

+0

刪除'延遲'廢話是一個很好的電話。 – sberry 2013-03-11 08:57:18

+0

@Juhana感謝那些工作很棒的人。 和另一個小問題,那個循環如何變成一個無限循環? – bobsilon 2013-03-11 09:11:44

+0

我不太明白你的意思。它循環遍歷每個單選按鈕,無論有多少個單選按鈕。 – JJJ 2013-03-11 09:13:51