У меня есть мастер шаблон как:
<script type="text/x-jQuery-tmpl" id="baseTmpl"> <tr> <td>${Name}</td> <td> <div id="${ID}"> {{tmpl "#displayTmpl"}} </div> </td> </tr> </script> <script type="text/x-jQuery-tmpl" id="displayTmpl"> <a id="myLink" href="javascript:changeTmpl(${ID})">${Department}</a> </script> <script type="text/x-jQuery-tmpl" id="editTmpl"> <input type="text" id="text" value="${Department}" /> </script> <script type="text/javascript"> function changeTmpl(id) { var templateItem = $('#'+id).tmplItem(); templateItem.tmpl = editTemplate; templateItem.update(); }; </script>
Приведенный выше код удаляет также все данные tr и когда я обновляю шаблон. Я хочу обновить содержимое только div, а не full tr
Когда вы делаете это:
var templateItem = $('#'+id).tmplItem();
Вы получаете tmplItem элемента div, который фактически является тем же tmplItem для всего, отображаемого этим шаблоном (всего <tr>).
<tr>
Вы хотите получить доступ к элементу tmplItem внутри div.Это будет работать:
var templateItem = $('#'+id).children(":first").tmplItem();
В базовом шаблоне идентификатор должен ссылаться на tr, а не на div
<tr div id="${ID}"> .... </tr>
В тот момент, когда вы выбираете var templateItem = $ ('#' + id) .tmplItem ();, он извлекает только div, потому что это то, к чему относится id.