2013-05-02 50 views
2

我有一個html頁面,它將顯示用戶配置文件的用戶名,地點,等等。我在jquery中使用ajax獲取值。現在我有問題,如何獲取的值分配給DOM:動態地分配值給dom

第一種方法會等到我得到的數據,然後動態地創建DOM和附加到目標DIV

$.ajax({ 
    url: "profiledata", 
    type: "POST", 
    success:function(data){ 
     $("<div><label>"+data.name</label><br/> 
      <label>"+data.place</label></div>").appendTo("target div"); 
    } 

在這種方法更追加的字符串將會發生,所以我懷疑進程所消耗的內存。

方法二將只使用ID來賦值:

$.ajax({ 
    url: "profiledata", 
    type: "POST", 
    success:function(data){ 
      $("#uname").text(data.name); 
      $("#place").text(data.place); 
    } 

<div><label id="uname"></label><br/> 
<label id="place"></label></div> 

哪一個將是有效的在加載頁面的條款,即較輕的代碼和 頁沒有我提到的一些寫的方法呢?或者有更好的解決方案嗎?

+0

其中6個是另外6個,取決於您的使用情況,哪個更具可讀性。我不相信會有任何**顯着差異的表現。 – Liam 2013-05-02 16:01:51

+0

在第一種方法中,所有的'「


」'必須在被追加之前由jQuery解析。我會說第二個更有效率。 – Ian 2013-05-02 16:01:51

+0

根據項目的複雜性,使用許多Javascript MV *框架中的一個可能是值得的,它允許您輕鬆地將DOM綁定到數據源。一些例子是[Knockout.js](http://knockoutjs.com/),[AngularJS](http://angularjs.org/)和[Backbone.js](http://backbonejs.org/)。這些允許您只從服務器提取數據,而不必擔心更新DOM;該框架爲你做到了這一點。 – jmeas 2013-05-02 16:06:33

回答

1

取決於用例,兩種解決方案都有優點和缺點。

第一種方法:

  • ,直到你需要他們
  • 但它也有JQuery的在內存中創建的元素,而不是修改頁面上的元素不加載的元素。

第二種方法:

  • 也沒有創造這樣修改標記的元素是因爲我們並不尋求在js HTML更容易一些。
  • 現在我們必須記住隱藏要素,如果我們不希望用戶看到他們

哪一種方法,我會使用,將取決於各種因素。一般來說,我更喜歡第二種,因爲當我想修改標記時,我沒有在javascript中查找。

+0

這是否意味着如果我有一些像用戶配置文件一樣的固定DOM,我們應該使用第二種方法,如果它的動態DOM像顯示不斷變化的註釋那樣應該使用第一種方法 – manish 2013-05-02 16:08:53

+0

作爲一般規則,是的,像那樣。 – Schleis 2013-05-03 00:03:27

1

重複操作DOM常常涉及開銷。從這個角度來看,第一種方法似乎更合適。 就ajax調用的速度而言,數據在這兩種方法中都以相同的方式檢索,您可以使用.ajaxStart().ajaxStop()來「加載」某種效果。