如何使用jQuery选择单个子元素?

Jon*_*ney 60 javascript jquery dom-traversal

使用jQuery如何选择单个子元素?我查看了Traversing API并知道我可以选择所有直接子img元素,如下所示:

$(this).children('img');
Run Code Online (Sandbox Code Playgroud)

要选择第一个子img元素,我可以使用这样的下标:

$(this).children('img')[0];
Run Code Online (Sandbox Code Playgroud)

但我想我有点惊讶我不能这样做:

$(this).child('img'); // no subscript, returns single element
Run Code Online (Sandbox Code Playgroud)

还是我错过了什么?

Gre*_*reg 90

我想你想要做的是:

$(this).children('img').eq(0);
Run Code Online (Sandbox Code Playgroud)

这将给你一个包含第一个img元素的jquery对象,而

$(this).children('img')[0];
Run Code Online (Sandbox Code Playgroud)

会给你img元素本身.

  • 请注意,在第一个答案中使用 find 将为您提供所有后代元素,而 child 只会为您提供直接子元素。 (2认同)

Jos*_*ola 40

不.每个jQuery函数都返回一个jQuery对象,这就是它的工作原理.这是jQuery魔术的重要组成部分.

如果要访问底层元素,您有三个选项......

  1. 不要使用jQuery
  2. 使用[0]引用它
  3. 扩展jQuery以做你想要的......

    $.fn.child = function(s) {
        return $(this).children(s)[0];
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 不.如果我使用例如`find("div")[0]`我将不会将`div`作为jQuery对象.我将把`div`作为HTMLElement.要将`div`作为jQuery对象,必须使用`.eq(0)`,正如Greg在下面所说的那样. (7认同)

Ana*_*liy 5

也许以这种方式?

$('img', this)[0]
Run Code Online (Sandbox Code Playgroud)