这是我的出席:
$('md-card').each(function(index){
setTimeout(function(){
$(this).addClass('hietim');
},500*index);
});
目标是为md-card
元素设置分层时间。
它没有用,因为$(this)
在setTimeout(function(){})
内没有任何意义。我也尝试过:
$('md-card').each(function(index){
var e = $(this)
setTimeout(function(e){
e.addClass('hietim');
},500*index);
});
它会弹出一个jquery错误。还尝试过:
$('md-card').each(function(index){
$(this).delay(500*index).addClass('hietim');
});
它失败了,因为delay()
似乎无法与addClass
一起使用。
答案 0 :(得分:3)
只要您不将变量传递给函数,第二个选项就应该有效。然后它会传递一个对e
的引用,创建一个闭包,当setTimeout完成时,该闭包将允许函数使用该变量,而不管该作用域是否继续存在。
$('md-card').each(function(index){
var e = $(this)
setTimeout(function(){ // Remove the e here
e.addClass('hietim');
},500*index);
});
答案 1 :(得分:0)
即使你也可以尝试这种方式
$('md-card').each(function(index){
setTimeout(function(thisObj){
thisObj.addClass('hietim');
},500*index,$(this));
});
在此处查看setTimeout功能详细信息。
答案 2 :(得分:-1)
为此,我使用了元素的偏移量(从左上角开始)。
您可以在jQuery plugin上看到github的源代码。
$('md-card').each(function(index){
var element = $(this);
var elementOffset = element.position();
var calculatedOffset = elementOffset.left * 0.8 + elementOffset.top;
var timeOut = parseFloat(calculatedOffset / 15).toFixed(2);
setTimeout(function(){
element.addClass('hietim');
}, timeOut*index);
});