2013-03-11 33 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