2011-11-03 27 views
2

我怎样才能解决这个错误:我该如何解决“无方法‘appendTo’错误

遗漏的类型错误:对象没有方法‘appendTo’ 下面的代码:

function refresh(){ 
     $('#contacts').empty(); 
     $("#contactTmpl").tmpl({contacts:contacts}).appendTo("#contacts"); 
     $(".contact").each(function(i) { 
      var contact = contacts[i]; 
      $("input.tomap", this).link(contact); 
     }); 
    } 


<script type="text/javascript" src="a.js"></script> 

<form> 
    <div id="contacts">Loading ...</div> 
    <button class="add">New</button> 
    <button class="save"> Save</button> 
</form> 
<script id="contactTmpl" type="text/x-jquery-tmpl"> 

    {{each contacts}} 
     <div class="contact" data-index="${$index}"> 
      <label>First name</label> <input class="tomap" name="firstName" value="${firstName}"> 
      <label>Last name</label> <input class="tomap" name="lastName" value="${lastName}"> 
      <label>Number</label> <input class="tomap" name="phone" value="${phone}"> 
      <div class="tools"> 
       <button class="delete"</button> 
      </div> 
     </div> 
    {{/each}} 
</script> 

这是HTML和JavaScript代码

+0

没有什么明显的错误与你在这里包含的内容。什么是refresh()被调用?文件准备好或加载后,我希望。 a.js里面有什么?也许你可以扔一个小提琴看? – Kato

回答

1

您需要先创建节点试试这个:

$('<div id="contactTmpl"/>').tmpl({contacts:contacts}).appendTo("#contacts"); 
+0

我有节点,请参阅我所做的编辑 –

4

我会假设你正在使用jQuery模板,因为这是它的样子。如果模板未能呈现,那么它返回null,我相信这就是为什么你得到的对象没有方法错误。我将您的代码修剪到模板和调用模板,并修复了{{each}}${$index}。我还假设变量contacts是一个对象数组。

的工作小提琴是在这里:http://jsfiddle.net/brettwp/yfcuL/

而且代码:

<div id="contacts">EMPTY</div> 
<script id="contactTmpl" type="text/x-jquery-tmpl"> 
    {{each(index,contact) contacts}}  
     <div class="contact" data-index="${index}"> 
      <label>First name</label> <input class="tomap" name="firstName" value="${contact.firstName}"> 
      <label>Last name</label> <input class="tomap" name="lastName" value="${contact.lastName}"> 
      <label>Number</label> <input class="tomap" name="phone" value="${contact.phone}"> 
      <div class="tools"> 
       <button class="delete"></button> 
      </div> 
     </div> 
    {{/each}} 
</script> 

$(function(){ 
    $("#contactTmpl").tmpl({contacts: contacts}).appendTo("#contacts"); 
});