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

时间:2012-01-24 13:32:24

标签: 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');
            });

2 个答案:

答案 0 :(得分:9)

假设我已正确理解您的问题,您正试图获取input的所有div个子元素:

mainDiv.find("div > input");

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

mainDiv.find("div input");

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

答案 1 :(得分:0)

嗯,你实际上是用

创建一个div
 var mainDiv = $('<div>');

然后你附加一个<div>

 var div = $('<div>').appendTo(mainDiv);

然后您将<input>附加到<div>

 $('<input type="checkbox">').appendTo(div);

因此输入不是mainDiv的直接子节点,它们是后代,所以你必须这样做

 mainDiv.find('input').each