2011-01-19 66 views
0

我正在學習有關jQuery中的模板。並且已經得到了我測試的一些示例代碼。但它似乎並不奏效。jQuery模板的問題。對象不支持此方法錯誤

<html> 
<head> 
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js " type="text/javascript"></script> 
    <script src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js" type="text/javascript" /> 
</head> 

<body> 

    <h2>ViewPage1</h2> 

    <script id="movieTemplate" type="x-jquery-tmpl"> 
     <li><b>${Name}</b> (${ReleaseYear})</li> 
    </script> 

    <div id="movieList"></div> 

    <script type="text/javascript"> 
      var movies = [ 
       { Name: "The Red Violin", ReleaseYear: "1998" }, 
       { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
       { Name: "The Inheritance", ReleaseYear: "1976" } 
       ]; 

      // Render the template with the movies data and insert 
      // the rendered HTML under the "movieList" element 
      $("#movieTemplate").tmpl(movies).appendTo("#movieList"); 
    </script> 
</body> 

當調試我可以看到,問題是與.appendTo()方法。而且我也可以在intellisens中看到那種方法不在那裏。

我做錯了什麼?

+0

是什麼$( 「#movieTemplate」)TMPL(電影)的回報? 「tmpl」函數可能無法鏈接,因此您試圖在非jQuery對象上訪問jQuery方法。 調試的一個好方法是將鏈式調用分解爲單獨的語句。這使得更容易設置斷點並查看每個函數的返回值。 – draeton 2011-01-19 21:22:16

回答

2

這似乎是在標題中的腳本定義一個問題:

<head> 
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js " type="text/javascript"></script> 
    <script src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js" type="text/javascript" /> 
</head> 

script標籤必須有結束</script>標籤。基本上你的tmpl腳本沒有加載。我確實注意到這是tmpl示例中的一個錯誤,所以不是你的錯。如果您更改第二個相匹配的第一個,它工作正常:

<head> 
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js " type="text/javascript"></script> 
    <script src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js" type="text/javascript"></script> 
</head> 

例: http://jsfiddle.net/UZ62w/

1

我很確定它與tmpl沒有返回一個jQuery對象有關。嘗試修改您的JS類似於這樣的事情

var movies = [ 
      { Name: "The Red Violin", ReleaseYear: "1998" }, 
      { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
      { Name: "The Inheritance", ReleaseYear: "1976" } 
      ], 
template = $("#movieTemplate").tmpl(movies); 

$("#movieList").append(template); 

編輯:這裏有一個jsfiddle顯示它的工作原理。

+1

你的作品和他的原因與這裏的修改無關。它的作用是因爲你改變了圖書館的加載方式。 – 2011-01-19 23:06:39

+0

謝謝你澄清和設置記錄,先生。非常感謝。 :-) – Lance 2011-01-19 23:45:53

相關問題