2013-10-28 34 views
2

我是新來的Jquery,但不是JS,PHP,Drupal等,甚至是新的到stackoverflow。Undefinded while Drupal_add_js/Jquery的節點

對於刷新我在一個簡單的HTML文件的東西用於測試使用如下所示的網絡攝像頭圖像:

var URL = "http://webcam.tld/live.jpg"; 
var QueryString = "?random=RANDOM_NUMBER"; // simplified 
$("#webcam").attr("src", URL + QueryString) ; 

這個作品!

在Drupal 7的JS文件中包含:

<?php 
drupal_add_js('sites/site_1/themes/t1/js/webcams.js' , 'file'); 
print '<img id="webcam" src="http://webcam.tld/live.jpg" />'; 
?> 

外部JS文件 'webcams.js' 的聲音是這樣的:

jQuery(document).ready(function(){ 
    var URL = "http://webcam.tld/live.jpg"; 
    var QueryString = "?random=RANDOM_NUMBER"; 
    // This gives TypeError (see below) 
    $("#webcam").attr("src" , URL + QueryString); 
    // THIS WORKS 
    alert("Hello"); 
}) ; 

我收到以下錯誤信息:

類型錯誤: '未定義' 不是一個函數(計算 '$( 「#攝像頭」)')

我一個米做錯了嗎?

感謝您的提示和你的關注。 漢斯

+0

你忘了導入jQuery庫本身嗎?或者你是否導入它,但也調用'jQuery.noConflict()'? – Pointy

+0

我建議Drupal通常爲我的小腳本做它。上面的JS文件(幾乎)完整。其他庫(Colorbox,Fancybox等)依賴於jQuery。我也嘗試了「內聯」 - drupal_add_js的模式,但我用文件模式得到了「更好」的錯誤消息。 – Snakehead

+0

那麼你可以在嘗試使用它之前明確地測試'$'是否爲null。如果它爲空,那麼* something *會搞亂jQuery。 – Pointy

回答

0

在Drupal7你需要用你的jQuery代碼到功能,像這樣:

// We define a function that takes one parameter named $. 
(function ($) { 
    // Here is our code 
    // ... 
}(jQuery)); 

或者,您可以使用完整的「jQuery的」,而不是「$」無處不在。 您可以在https://drupal.org/node/171213 上看到更多信息另外,我建議您使用Drupal的行爲(您要關注drupal標準版) http://blog.amazeelabs.com/en/comment/510193 - 關於drupal行爲。