2013-06-03 43 views
0

我正在一個小型網站上工作,部分由AJAX驅動。對於其中的一部分,當用戶點擊一個按鈕時,內容被加載到一個元素中。問題在於,不是將HTML插入到元素中,而是將元素(#user .padded)完全刪除!但是,從控制檯(Chrome)運行它工作得很好。jQuery html()移除元素而不是設置內容

下面是相關代碼:

var attr = $(this).attr('data-id'); 

if (!$('#user').is(':visible')) { 
    $('#user').slideDown(300); 
} 
var user = $('#user'); 

$.ajax({ 
    url: window.baseurl + "/admin/users/" + attr + "/get", 
    timeout: 5000, 
    cache: false 
}).success(function(response) { 
    $('#user .padded').html(response); 
}).fail(function() { 
    $('#user .padded').html('<div class="alert">Unable to load the user, we\'re sorry!</div>'); 
}).always(function() { 
    spinner.stop(); 
}); 

是的,我不知道這是不是在目前非常有效的,但我已經簡化它進行調試。在這種情況下,只有fail()函數被調用,因爲服務器端尚未實現。沒有Javascript錯誤報告,只有404。

我讀了一些關於html()清除某些狀態,所以我也嘗試用show()而不是slideDown(300)。那裏也沒有運氣。

有什麼想法會導致這種情況? 前: Before

後:我

After

+1

'.html'會清除您選擇的元素內的所有內容,然後將您傳遞的內容作爲參數插入。如果你想追加內容,請參閱appendTo函數。 – BrunoLM

+0

我在上面的圖片之前和之後添加了。它不會取代內容 - 這正是我想要的 - 它將刪除整個元素。 –

+1

請向我們展示'spinner.stop'的代碼嗎? –

回答

0

不知道你怎麼會出現被完全刪除padded元素,看到基於您的代碼我下面的檢驗並且假定的結構在HTML ...

基於以下HTML:

<div id="user"> 
    User element 
    <div class="padded">Padded</div> 
</div> 

並應用以下的jQuery:

$('#user .padded').html('<div class="alert">Unable to load the user, we\'re sorry!</div>'); 

的DOM如下操作:

<div id="user"> 
    User element 
    <div class="padded"><div class="alert">Unable to load the user, we're sorry!</div></div> 
</div> 

也許你會在一些其他的方式去除該節點?使用Chrome(或Firebug)dom檢查器查看它對HTML所做的操作。

+0

我在上面的圖片之前和之後添加了。 –

相關問題