我有這樣的功能:的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