2012-03-27 60 views
1

即使元素存在,我的JavaScript模塊也無法使用$('.classname')找到具有類名稱的特定DOM元素。

$('.classname').length返回0,其中作爲$.find('.classname').length返回1

網站包含其他JavaScript模塊也。

任何人都可以幫我找到爲什麼發生這種情況?

我的jQuery版本是1.7.1。

重現此 1-轉到avc.com
2-打開控制檯。
3-將以下代碼粘貼到控制檯中。

var head = document.getElementsByTagName("head")[0]; 
var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.src = "//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"; 
script.async = true; 
head.appendChild(script); 

4-嘗試
$('.pkg').length$.find('.pkg').length

查詢從這裏http://i.imgur.com/4UDHz.png

還有一點的屏幕截圖,如果你嘗試這種在其他一些網站,它工作正常。

+1

在您的網頁做:alert(jQuery == $)給你一個真值? – aquinas 2012-03-27 13:52:15

+0

This works http://jsfiddle.net/GaSXP/ – 2012-03-27 13:54:40

+0

@SheikhHeera你可以試試看,我已經更新了我的問題 – Jeevan 2012-03-29 06:44:03

回答

2

您可能與其他JavaScript模塊有一些衝突。看看jQuery的noconflict

許多JavaScript庫使用$作爲函數或變量名,只是 如jQuery不會。在jQuery的情況下,$是jQuery的別名,所以 所有功能都可以在不使用$的情況下使用。如果我們需要使用 另一個JavaScript庫jQuery的旁邊,我們可以返回 $再換另一庫控制與以$ .noConflict()的調用

嘗試使用

jQuery('.classname').length 
+0

它不起作用。我已經使用noconflict。我的問題是爲什麼$('。classname')。length返回0和相同的$ .find('。classname')。length返回1 – Jeevan 2012-03-27 14:10:54

+0

您可以嘗試在jsfiddle中複製您的問題嗎? – Rondel 2012-03-27 14:24:39

+0

我正在研究一個將JavaScript注入所有網站的擴展。我注意到這發生在avc.com上。這裏是屏幕截圖 - http://i.imgur.com/4UDHz.png 重現此 轉到avc.com 打開控制檯。 粘貼下面的代碼。 'var head = document.getElementsByTagName(「head」)[0]; var script = document.createElement(「script」); script.type =「text/javascript」; script.src =「//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js」; script.async = true; head.appendChild(script);' 然後嘗試 $('。pkg')。length $ .find('。pkg')。length – Jeevan 2012-03-28 06:08:19