繁体   English   中英

jQuery根据匹配父类的类选择器查找子节点

[英]jQuery find child based on class selector matching parents

我试图使用jquery .find()方法找到特定节点的后代。 我注意到.find()根据树中当前节点上方父项的属性不匹配元素。 第一个find返回0个元素,但第二个find返回我正在搜索的元素。 我的问题是,这是否是find方法允许的选择器模式的限制,并且找到唯一具有此限制的jquery函数? 我希望这两个都返回相同的元素。 另外,是否有另一种jquery方法可以更简洁地完成与第二​​种方法相同的操作。 这是我正在尝试做的简化示例,我无法删除.find('.input-group')因为这是我的函数的输入。

 $(document).find('.input-group').find('.form-group .form-control') $(document).find('.input-group').find('.form-control').filter('.form-group .form-control') 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <div class="form-group"> <div class="input-group"> <span class="input-group-addon"> <input type="checkbox" aria-label="CVV Disabled" value=""> </span> <input id="vtCvv" name="vtCvv" type="password" class="form-control" required="true" data-bv-field="vtCvv"> </div> </div> </body> </html> 

.find()查找元素的后代。 你试图找到一个父母,然后是一个后代。

您可以找到.input-group ,然后使用.closest()向后遍历DOM到“最近的” .form-group ,然后您可以向下导航到.form-control如下所示:

$(document).find('.input-group').closest('.form-group').find(".form-control")

或者您可以使用.parent()回溯到.form-group如下所示:

$(document).find('.input-group').parent().find(".form-control")

我更喜欢.closest()因为如果要在.input-groupform-group之间添加另一个元素,那么父元素会有所不同,但是.closest仍然可以工作。

$('.form-group .input-group').find('.form-control');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM