2012-03-27 62 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