将Object #<HTMLDivElement>转换为jQuery对象

4

我该如何将 #<HTMLDivElement> 转换为 jQuery 对象?

我需要完成以下操作:我有一个具有 class 为 "contents" 的 div 列表。所以我迭代它,直到找到带有额外类名 "test" 的 div。

这是我的代码:

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

我遇到了一个异常:Uncaught TypeError: Object #<HTMLDivElement> has no method 'hasClass'

1
只需将其传递给jQuery构造函数 - Bergi
为什么不使用像 $(".contents.test").each(alert.bind(window, "got it")) 这样的选择器呢?或者是 $(".contents").filter(".test") - Bergi
3个回答

10

each()函数会给你一个DOM对象,你需要将其转换为jQuery对象。你可以将value传递给$ jQuery函数以将其转换为jQuery对象。

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

您无需逐个迭代并简化它,例如:

elements = $(".contents.text")

感谢您的澄清 :) - Ayyappa

2

为什么不使用更简单的方法:

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

这里的jQuery会选择同时设置了"contents""test"类的元素。

演示: http://jsfiddle.net/xfErG/


这是不可能的,因为在这个例子中它被称为test,但在我的实际情况中它总是另一个名称。 - gurehbgui
1
@gurehbgui 那又怎样?用 $(".contents." + myClassName) 做就行了。 - VisioN

0

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

var foo = jQuery(HTMLElementNode);

以下两行代码的结果相同:
var foo = jQuery('#foo');
var foo = jQuery(document.getElementById('foo'));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接