我无法弄清楚$("identifier").remove
如何与setTimeout()
一起使用。下面的代码试图为雪花下拉动画
//construct a html string
var html_str = "<img class='snowflakes' src = 'snowflake1.png' style='position: absolute; left: " + String(pos_x) + "px'> "
//Append the element to field
var flake = $(html_str).appendTo('#field');
flake.animate({top: String(FIELD_SIZE-FLAKE_SIZE)+'px'},
drop_speed,
//callback function when finished animating
function(){
setTimeout(function(){flake.remove();},1000);
}
);
我不知道如何
setTimeout(function(){flake.remove();},1000); //this works
setTimeout(flake.remove,1000); //but this doesn't remove the element
在我看来,两者都应该执行相同的功能。这是怎么回事?
答案 0 :(得分:3)
第二个没有用,因为它是在全球范围内执行的。以下是关于传递给setTimeout的函数中this
上下文的文章,根据MDN (Check 'The "this" problem)'
如果以这种方式编写代码,您的代码将起作用:
setTimeout(flake.remove.bind(flake),1000);