对象#作为jQuery对象

对象#<HTMLDivElement>作为jQuery对象

问题描述:

如何获得作为jQuery对象的#<HTMLDivElement>对象#<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 2013-05-06 09:50:53

+0

你为什么不使用像'$(“。contents.test”)这样的选择器?each(alert.bind(window,“got it”))'?或'$(“。contents”)。filter(“。test”)'? – Bergi 2013-05-06 09:51:20

each()功能给你DOM对象,你必须将它转换为jQuery对象。您可以通过value$ jQuery函数将其转换为jQuery对象。

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

你并不需要通过每个迭代和简化它像

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

这是工作,谢谢 – gurehbgui 2013-05-06 09:54:08

+2

投票的理由? – Adil 2013-05-06 10:01:08

+0

谢谢,不用客气@gurehbgui。 – Adil 2013-05-06 10:01:44

主要jQuery的函数可以接受一个DOM元素作为它的参数。

var foo = jQuery(HTMLElementNode); 

下面的代码两行具有相同的最终结果:

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

为什么不这样做简单的搭配:

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

这里jQuery将选择具有两个"contents"元素和"test"类别设置。

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

+0

这是不可能的,因为在这个例子中它被称为测试,但在我的真实情况下,它总是另一个名字 – gurehbgui 2013-05-06 09:53:44

+1

@gurehbgui那么是什么?用'$(“。contents。”+ myClassName)''做。 – VisioN 2013-05-06 09:55:22