2013-03-11 24 views
0

我有這樣的代碼......的jQuery的.html( '')沒有工作,我希望

$(".loadMsg").load('modalAnsmessages.php?id=<?php echo $row['id']; ?>&t=r',function(){ 
    $('#preloader').fadeOut(); 
    $(".modal_dialog .content").css({ 'background-color': '#eeeeee' }); 
    setTimeout("$.fancybox.resize();",500);  
}); 

工作正常。後來我運行這個代碼...

$(".p_close").click(function(){ 
    $(".loadMsg").html(''); 
    $(".loadMsgOpen").show(); 
    $(".modal_dialog .content").css({ 'background-color': '#ffffff' }); 
    setTimeout("$.fancybox.resize();",500); 
}); 

...代碼乍一看似乎運行良好;然而,我不認爲$(".loadMsg").html('');正在按我的預期工作。每次運行第一個代碼塊時,以前的每個.loadMSG內容都會暫時顯示,直到它最終通過所有先前的實例並停止。有時它會停在正確的位置,有時不會。

我想要發生的是,當$(".p_close").click運行時,我想所有內存$(".loadMsg")都消失了。我認爲$(".loadMsg").html('');會這樣做,但顯然我錯了。

+1

使用'$(「。loadMsg」)。empty()'來代替。 '.html('')'是.empty()的封裝。append()' – 2013-03-11 17:56:13

+0

嘗試過'.empty()'但沒有成功。感謝@BradM的想法,但。 – 2013-03-11 18:28:17

+0

我並不是暗示使用'.empty()'作爲解決方案,就像更精確的代碼一樣。我不確切知道你想要用你的代碼做什麼,但我的建議是隱藏所有內容,並在準備好時才顯示它。它顯示你在某些代碼中沒有顯示的錯誤。 – 2013-03-11 18:42:39

回答

1

嘗試使用empty函數:

此方法刪除,不僅孩子(和其他後裔)元素, 也是匹配的元素中的任何文字。

$(".p_close").click(function(){ 
    $(".loadMsg").empty(); 
    $(".loadMsgOpen").show(); 
    $(".modal_dialog .content").css({ 'background-color': '#ffffff' }); 
    setTimeout("$.fancybox.resize();",500); 
}); 
+0

這爲什麼會這樣工作? .html('')已經對元素執行了.empty()。 – 2013-03-11 17:58:28

+0

試過'.empty()'但沒有成功。看起來像@BradM是對的。 – 2013-03-11 18:24:22

+0

@ G-J'empty()',以及'remove()'或'html()'將從DOM中刪除子元素。這意味着他們已經走了 - 祝你好運,試圖讓他們回來,除非你明確地嘗試過。爲了做更多,我們將需要看到一個工作的例子。你可以將問題代碼放入jsFiddle嗎? – BinaryTox1n 2013-03-11 18:41:59