我有一个div
的列表,我希望以延迟的方式迭代应用CSS过滤器。
我目前已经尝试过这个
$(this).children().each(function() {
$(this).delay(5000).css("-webkit-filter", "brightness(2)");
});
这个
$i = 0;
$(this).children().each(function() {
setTimeout(function() {
$(this).css("-webkit-filter", "brightness(2)");
}, $i * 500);
$i++
});
第一个没有任何延迟。第二个将延迟应用于组中的最后一个(.each())
答案 0 :(得分:0)
你的第二种方法的问题是,匿名setTimeout函数中的“this”不再是你所期望的“this”。
我使用的解决方案: 只需在调用setTimout之前重新分配“this”:
var mythis = this;
mythis现在可以在setTimeout的匿名函数中访问。
$i = 0;
$(this).children().each(function() {
var mythis = this; // << introducing mythis
setTimeout(function() {
$(mythis).css("-webkit-filter", "brightness(2)"); // << using mythis
}, $i * 500);
$i++
});