我需要知道,如何为我选择的每个元素运行一个函数。这是我的jQuery代码:
$(function() {
$(".line").each(function() {
var dot = $(this).find('.dot');
setTimeout(function () {
moveDot(dot);
}, 250);
});
});
它可以为每个元素运行moveDot()
(每隔250ms),但现在,所有元素都在同一时间开始。这是JSFIDDLE。
答案 0 :(得分:2)
使用索引:
$(".line").each(function(i) {
var dot = $(this).find('.dot');
setTimeout(function () {
moveDot(dot);
}, ++i * 250);
});
答案 1 :(得分:2)
与每个index
$(".line").each(function(i) {
var dot = $(this).find('.dot');
setTimeout(function () {
moveDot(dot);
}, 250 * i+1);
});
答案 2 :(得分:2)
尝试将index
传递给setTimeout()
。它会为循环中的每个元素递增,从而增加延迟。
$(function() {
$(".line").each(function(index) {
var dot = $(this).find('.dot');
setTimeout(function () {
moveDot(dot);
}, index * 250);
});
});
<强> Fiddle 强>
答案 3 :(得分:0)
您可以使用随机函数javascript
(function() {
$(".line").each(function() {
var x = Math.floor((Math.random() * 250) + 1);
var dot = $(this).find('.dot');
setTimeout(function () {
moveDot(dot);
}, x);
});
});
答案 4 :(得分:0)
我更喜欢这样作为解决方案之一:
function moveDot(elm,index) {
elm.animate({left: '370px'}, {duration: 3000*index, queue: false, done: function() {
elm.animate({left: '0px'}, {duration: 3000*index, queue: false, done: function() {
moveDot(elm,index)
}});
}});
}
$(function() {
$(".line").each(function(i) {
var dot = $(this).find('.dot');
setTimeout(function () {
moveDot(dot,++i);
}, 250);
});
});