2011-07-20 113 views
0

所以問題在於標題。我如何使用jQuery在一段時間內用另一個內容替換一個div內容?我只是有用戶信息的一個塊看不見的(在風格display: none;,雖然信息是從服務器retrieveing我要像Loading user info...顯示消息。如何臨時替換div內容


編輯

下面是我獲取信息從服務器:

$.post("/getUserAdditionalInfo", 
       { "id": pId }, 
       function (data) { 
        window.user = $.extend(
        { 
         "pid": pId, 
         "secondname": data.sname, 
         "firstname": data.fname, 
         "middlename": data.mname 
        }, existingParams); 
        updateUserInformationLabels(); 
       }, 
       "json" 
     ); 

EDIT2

這裏是我的代碼對用戶信息:

<div id="UserAdditionalInfo"> 
<ul class="info"> 
    <li><b>First name:</b><span id="ExInfoWorkFirstName"></span></li> 
    <li><b>Second name:</b><span id="ExInfoWorkSecondName"></span></li> 
    <li><b>Middle name:</b><span id="ExInfoWorkMiddleName"></span></li> 
</ul> 
</div> 

我只想temporarely與「加載用戶信息」字符串替換使用id = UserAdditionalInfo格。然後數據被完全檢索,我需要恢復初始內容(沿着用數據替換佔位符)。

+0

你想替換你想要顯示的同一個div內容加載用戶信息... – Vivek

+0

是的,你是對的。我怎樣才能輕鬆快捷地解決這個問題? – kseen

+0

你有更多的代碼在該div接受'加載用戶信息...'?你只想替換'加載用戶信息...'部分..是這樣嗎? – Vivek

回答

2

存儲原始的HTML像這個 - 一個變量

var originalHTMl = $('#UserAdditionalInfo').html(); 

然後用loading info這樣的替換這個div的內容..

$('#UserAdditionalInfo').html('Loading user info...').show(); 

$.post("/getUserAdditionalInfo", 
       { "id": pId }, 
       function (data) { 
        window.user = $.extend(
        { 
         "pid": pId, 
         "secondname": data.sname, 
         "firstname": data.fname, 
         "middlename": data.mname 
        }, existingParams); 
        updateUserInformationLabels(originalHTMl);//pass the original html to this function 
        var updatedHTML = $('#UserAdditionalInfo').html();// get the updated HTMl 
        $('#UserAdditionalInfo').html(updatedHTML).show();//Show the div..now this div has all updated htnl 
       }, 
       "json" 
     ); 


function updateUserInformationLabels(originalHTMl){ 
       if (typeof window.patient != 'undefined') { 
       var ExInfoWork = $(originalHTMl).find('#ExInfoWork'); 
       ExInfoWork.html(window.patient.work); 
       } 
     // more replacement logic as you said 
} 
// don't return anything 
} 
+0

請參閱我的第二個問題更正。 – kseen

+0

看到我更新的答案 – Vivek

+0

我認爲這樣做的方式。似乎沒有更好的解決方案。所以,最後一個問題是我有原始的HTML隱藏(有'display:none'),然後我恢復它,它變得不可見。我可以刪除originalHTML變量中的類'invisible'嗎? – kseen

3

你可以這樣做......

$('div:first').html('Loading user info...').load('something.php'); 
+0

感謝您的回覆!查看我的問題更新。它告訴我它不知道$的post方法。 – kseen

0

如果您正在使用jQuery.ajax(),那麼這就是方式:

$.ajax({ 
    beforeSend: function() { 
     // Replace with "loading..." 
    }, 
    complete: function() { 
     // Replace with result 
    }, 
}); 
+0

我曾考慮過這個問題,但問題是我已經在div塊中擁有所有必需的html代碼。它第一次具有'display:none'內聯樣式,並且不顯示其內容。並且在完整的事件中,我無法用用戶數據的所有巨大的html混亂來替代它。希望你明白我的意思。對不起我的英語不好。謝謝! – kseen