2011-02-03 48 views
5

所以我使用jQuery模板和有下面的代碼在我的應用程序工作:jQuery的模板 - 更換DIV內容

@using (Html.BeginForm()) 
    { 
     @Html.DropDownList("StateList", 
          Model.States, 
          "<Select>" 
          ) 

     <div id="designCenters"></div> 

     <script id="designCenterTemplate" type="text/html"> 
      <p><li>${Name}</li></p> 
     </script>   
    } 

    <script language="javascript" type="text/javascript"> 
     $("#StateList").change(function() { 
      $.getJSON("/api/designcentersbystate/" + $(this).val(), 
       function (data) { 
        $("#designCenterTemplate").tmpl(data).appendTo("#designCenters") 
       }); 
     }); 
    </script> 

由於我的模板函數的回調函數參數調用.appendTo,顯然設計中心的列表被添加到列表中。我的目標是用<div id="designCenters">替換模板結果中的內容。

尋找最有效的方法來做到這一點。

謝謝。

回答

9

更改成功函數像這樣:

function (data) { 
    $("#designCenters").html($("#designCenterTemplate").tmpl(data)) 
} 

或者你可以每次清空容器。

$("#designCenters").empty(); 
$("#designCenterTemplate").tmpl(data).appendTo("#designCenters"); 
1

您可以在這樣一個元素代替HTML:

$("#designCenters").html(YOUR HTML HERE); 
+0

我試圖改變模板代碼:$(「#designCenterTemplate」)TMPL(數據)的.html(「#designCenters」),但還有其它比以使其完全停止顯示模板沒有影響數據(沒有JS錯誤)。有點新的jQuery,所以這可能是一個基本的問題,我叫它的方式。 – Scott 2011-02-03 18:02:58

+0

你剛纔錯誤地使用了html方法。我的版本是正確的。 Josiash的答案與我的類似,但對於您的場景 – stephen776 2011-02-03 18:07:37