2013-05-06 2 views
3

Как я могу получить #<HTMLDivElement> как объект jQuery?Объект # <HTMLDivElement> как объект jQuery

Мне нужно сделать следующее: у меня есть список div с содержимым класса. Поэтому я итерацию над ней, пока я не нашел один с дополнительным классом: «тест»

вот мой код:

$.each($(".contents"), function(key, value) { 
    if (value.hasClass("test")) 
    { 
     alert("got it"); 
    } 
}); 

Я получаю исключение: Uncaught TypeError: Object #<HTMLDivElement> has no method 'hasClass'

+0

Просто передать его [JQuery конструктору] (http://api.jquery.com/jQuery/#jQuery-element). – Bergi

+0

Почему бы вам не использовать какой-то селектор типа '$ (". Content.test "). Each (alert.bind (window,« got it »))'? Или '$ (". Contents "). Filter (". Test ")'? – Bergi

ответ

7

each() функция дает вы DOM объект, и вы должны преобразовать его в jQuery объект. Вы можете передать value в $ Функция jQuery, чтобы преобразовать ее в объект jQuery.

$.each($(".contents"), function(key, value) { 
    if ($(value).hasClass("test")) 
    { 
     alert("got it"); 
    } 
}); 

Вам не нужно перебирать каждый и упростить его, как

elements = $(".contents.text") 
+1

Это работает, спасибо – gurehbgui

+2

Причина проголосовало? – Adil

+0

Спасибо, добро пожаловать @gurehbgui. – Adil

0

Основная функция JQuery может принимать DOM-элемент в качестве аргумента.

var foo = jQuery(HTMLElementNode); 

Следующие две строки кода имеют один и тот же конечный результат:

var foo = jQuery('#foo'); 
var foo = jQuery(document.getElementById('foo')); 
2

Почему бы не сделать это проще с:

$(".contents.test"). ... 

Здесь JQuery будет выбрать элемент, который имеет как "contents" и "test" набор классов.

DEMO:http://jsfiddle.net/xfErG/

+0

это невозможно, потому что в этом примере его названный тест, но в моем реальном случае его всегда другое имя – gurehbgui

+1

@gurehbgui И что? Сделайте это с помощью '$ (". Content. "+ MyClassName)'. – VisioN

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