我设置了切片功能,调用.test
的索引以淡化5个块中的.test
div。这里有一个演示:http://jsfiddle.net/neal_fletcher/JT4KB/2/
jQuery的:
$(document).ready(function () {
$('.test').each(function (index) {
$('.test').slice(0, 5).delay(500).fadeIn(300);
$('.test').slice(5, 10).delay(1000).fadeIn(300);
$('.test').slice(10, 15).delay(1500).fadeIn(300);
});
});
这很好,但由于网站将是内容管理我想要一个更紧凑的解决方案,因此不必为每5个div编写一个函数,有没有办法通过添加额外的{{1来调用此函数每5个div的延迟?如果这有道理?任何建议将不胜感激!
答案 0 :(得分:2)
先生,先生。
$(document).ready(function () {
setTimeout(function () {
$('.test').each(function (i) {
var delay = Math.floor(i/5)*500 + 500;
$(this).delay(delay).fadeIn(300);
});
}, 1000);
});
答案 1 :(得分:0)
你可以像这样在jQuery中添加一个新方法:
$.fn.eachSlice = function(size, callback) {
var $t = $(this);
for(var i = 0; i < $t.length; i += size) {
callback.call($t.slice(i, i + size).get(), i / size);
}
return $t;
}
然后
$(".test").eachSlice(5, function(sliceIndex) {
$(this).delay(sliceIndex * 500).fadeIn();
});
答案 2 :(得分:0)
您可以使用循环来实现此目的。这个循环必须循环“.test divs的数量”/ 5次:
$(document).ready(function () {
setTimeout(function () {
for (i=0; i<=$('.test').length/5; i++) {
$('.test').slice(5 * i, 5*(i+1)).delay(500*(i+1)).fadeIn(300);
};
}, 1000);
});