我有这样的功能:的setTimeout()和remove()不按预期工作
function flash(msg) {
var _id = $('#flash_notice__');
if(_id.length > 0) {
_id.html(msg);
} else {
$('<div id="flash_notice__">'+ msg +'</div>').appendTo('body');
//$('body').append('<div id="flash_notice__">'+ msg +'</div>');
}
setTimeout(function(){
_id.fadeOut(500, function(){
$(this).remove(); //or _id.remove();
});
}, 2500);
}
第一次(在刷新)消息(MSG)保持页面上,那么当闪光灯()再次运行,效果很好。 我认为,当_id存在.remove()它正在工作,但是当创建消息时它仍然在屏幕上。 我做错了什么? 谢谢。
它的工作,谢谢,但我不明白。 'var _id = $('#flash_notice __');'在if条件之外......如果我保留我的代码,并用“$('#flash_notice__')替换”_id.fadeOut(500,...)“ .fadeOut(500,...)“它工作得很好。 – user2039290
@ user2039290 - 在您在逻辑的“else”分支中创建元素之前,该行代码运行*。因此,当你稍后尝试使用变量'_id'时,它不会引用任何对象。 – Jamiec