Jquery 在循环中调用setTimeout函数不起作用
我需要在一段时间内将类添加到一个跨度元素中Jquery 在循环中调用setTimeout函数不起作用,jquery,Jquery,我需要在一段时间内将类添加到一个跨度元素中 jQuery('.rating').each(function(){ var datarating = $(this).attr("rating"); for(var i=0; i<datarating; i++){ (function (i) { setTimeout(function () { rating(this, i);
jQuery('.rating').each(function(){
var datarating = $(this).attr("rating");
for(var i=0; i<datarating; i++){
(function (i) {
setTimeout(function () {
rating(this, i);
}, 1000, i);
})(i);
}
});
function rating(obj, i){
$(obj).find('span').eq(i).addClass('rated');
}
jQuery('.rating')。每个(函数(){
var datarating=$(此).attr(“评级”);
对于(var i=0;i问题是,此
不在setTimeout范围内。您应该存储全局引用,然后在内部使用它。请尝试以下操作:
Variables.obj = this;
Variables.ResizeTimer = setTimeout(
function(){
rating(Variables.obj, i);
},
1000
);
我猜“这”一定是你们的问题
在这种情况下,您最好使用旧的that=this技巧来引用正确的this并用它调用评级函数
从您的示例中也不清楚为什么需要超时?试试这个
jQuery('.rating').each(function(){
var rating = this;
var datarating = $(this).attr("rating");
var i = 0;
var interval = setInterval(function () {
if ( i < datarating ) {
rating(rating, i);
i++;
} else {
clearInterval(interval);
}
}, 1000, i);
});
jQuery('.rating')。每个(函数(){
var评级=此;
var datarating=$(此).attr(“评级”);
var i=0;
var interval=setInterval(函数(){
如果(i
抱歉,这是一个建议的编辑,我认为这可能是一个问题,但我想不是!
Variables.obj = this;
Variables.ResizeTimer = setTimeout(
function(){
rating(Variables.obj, i);
},
1000
);
jQuery('.rating').each(function(){
var rating = this;
var datarating = $(this).attr("rating");
var i = 0;
var interval = setInterval(function () {
if ( i < datarating ) {
rating(rating, i);
i++;
} else {
clearInterval(interval);
}
}, 1000, i);
});