我试图使用 jquery .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()寻找元素的后代。你试图找到一个 parent ,然后找到一个后代。
您可以找到 .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-group
和 form-group
之间添加另一个元素,父元素会有所不同,但 .closest
仍然有效。
关于javascript - jQuery 根据类选择器匹配父项查找子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850127/