2012-03-27 4 views
1

Мой модуль JavaScript не может найти конкретный элемент DOM с именем класса, используя $('.classname'), даже если этот элемент существует.

$('.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 == $) дает вам значение true? – aquinas

+0

Это работает http://jsfiddle.net/GaSXP/ –

+0

@SheikhHeera вы можете попробовать, я обновил свой вопрос – Jeevan

ответ

2

Возможно, у вас могут быть конфликты с вашими другими модулями JavaScript. Посмотрите на JQuery noconflict

Многие библиотеки JavaScript используют $ как функция или имя переменной, просто , как это делает JQuery. В случае jQuery, $ является просто псевдонимом для jQuery, поэтому вся функциональность доступна без использования $. Если нам нужно использовать другую библиотеку JavaScript наряду с JQuery, мы можем вернуть контроль $ обратно к другой библиотеке с вызовом $ .noConflict()

Попробуйте использовать

jQuery('.classname').length 
+0

Это не сработает. Я уже использовал noconflict. Мои вопросы были связаны с тем, почему $ ('. Classname'). Length возвращает 0 и тот же $ .find ('. Classname'). Length возвращает 1 – Jeevan

+0

Не могли бы вы попытаться воспроизвести вашу проблему в jsfiddle? – Rondel

+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'). Длина $ .find ('. Pkg'). – Jeevan

Смежные вопросы