选择特定类型div的子子节点

use*_*167 2 jquery jquery-selectors

我想选择我的"mainDiv"的"div" - 孩子的所有"输入" - 孩子.我尝试使用'div input:first-child',如下所示,我在http://api.jquery.com/first-child-selector/上找到它.但它不起作用.如果我只使用'div'作为过滤器,它可以正常工作.那我的错是什么?或者如何以简单的方式获得所有"输入" - 孩子?

        var data = ['name1', 'name2'];
        var mainDiv = $('<div>');
        for (var i = 0; i < data.length; i++)
        {
            var div = $('<div>').appendTo(mainDiv);
            $('<input type="checkbox">').appendTo(div);
            div.append(' ' + data[i]);
        }
        mainDiv.children('div input:first-child').each(
            function()
            {
                var child = $(this);
                alert('xx');
            });
Run Code Online (Sandbox Code Playgroud)

Jam*_*ice 9

假设我已经正确地理解了你的问题,那么你正试图获得所有input孩子的元素div:

mainDiv.find("div > input");
Run Code Online (Sandbox Code Playgroud)

如果你想要所有的后代input元素,不仅仅是直接的孩子:

mainDiv.find("div input");
Run Code Online (Sandbox Code Playgroud)

请注意,您需要使用find,而不是children.该children方法仅查看直接子节点,如果它们与选择器匹配则返回它们.选择器div input将不匹配任何直接子节点(唯一的直接子节点是a div),因此不返回任何元素.