2011-02-03 5 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"); 
+0

Бинго. Я приму это как ответ через 10 минут. – Scott

1

Вы можете заменить HTML в элементе, как это:

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

Я попытался изменить код шаблона:. $ («# DesignCenterTemplate») TMPL (данные) .html («# designCenters»), но это не имеет никакого эффекта, кроме как заставить его полностью прекратить показ шаблонный данных (без ошибок JS). Создайте новый для jQuery, так что это, вероятно, основная проблема с тем, как я его называю. – Scott

+0

Вы использовали метод html неправильно. Моя версия верна. Ответ Джозиаша похож на мой, но более полный для вашего сценария. – stephen776