javascript - jQuery 根据类选择器匹配父项查找子项

标签 javascript jquery html

我试图使用 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-groupform-group 之间添加另一个元素,父元素会有所不同,但 .closest 仍然有效。

关于javascript - jQuery 根据类选择器匹配父项查找子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850127/

相关文章:

jquery - 通过 jQuery 更改源后 html 音频找不到文件

html - 我如何拍摄一个圆圈的 SVG 图像并将其放在网页的底部,以一种您始终只能看到上半部分的方式

javascript - 通过将 __proto__ 放入原型(prototype)来在 JavaScript 中继承是不是很糟糕?

javascript - 反转二进制数组?

javascript - 关于基思·伍德倒计时器

jquery - 如何使用名称属性检查动态输入类型

jquery - 获取 jquery 中的下一个(不是立即)元素

Javascript clearInterval 在另一个范围内设置的间隔

javascript - 尝试在javascript中更改触摸框的颜色

javascript - JQuery中如何获取嵌套div的每个第一个元素的id