如何从子()中访问子元素?

use*_*701 7 jquery

我想得到一个元素的直接子元素,然后在特定索引处得到一个孩子的类.就像是:

var index = 25;
var children = $("#myListElement").children();
if (index < children.length) {
    if (children[index].hasClass("testClass")) {
        alert("hi!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为.children()的语法是可以的,但是我如何以jquery样式从它们中获取索引元素?

谢谢

Anu*_*rag 11

children方法返回一个类似于数组的对象,该对象包含纯DOM节点.您需要使用jQuery包装一个包含的元素,或者使用该eq(index)方法检索它以便能够使用jQuery方法hasClass.

if ($(children[index]).hasClass("testClass"))
Run Code Online (Sandbox Code Playgroud)

出于明显的性能原因,jQuery默认不包装它们.

如果您使用的是Firebug或Chrome/Webkit开发人员工具,则在尝试调用对象上的未定义方法时会出现异常.见例子.确保你正在观看控制台输出:)

TypeError: Object #<an HTMLLIElement> has no method 'hasClass'
Run Code Online (Sandbox Code Playgroud)

  • "children包含一系列普通DOM节点",这是误导性的.`children()`是一个像其他任何东西一样的jQuery集.如果使用`.eq(3)`而不是`[3]`它将返回一个jQuery包装的DOM元素,如预期的那样.当使用`[]`访问时,任何jQuery结果集都会返回一个DOM元素. (4认同)