Javascript jQuery基于匹配父类的类选择器查找子类
我正在尝试使用jqueryJavascript jQuery基于匹配父类的类选择器查找子类,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试使用jquery.find()方法查找特定节点的后代。我注意到,.find()不匹配基于树中当前节点上方父节点属性的元素。第一个查找返回0个元素,但第二个查找返回我搜索的元素。我的问题是,这是find方法所允许的选择器模式的限制吗?find是唯一具有此限制的jquery函数吗?我希望这两个函数都返回相同的元素。另外,还有另一种jquery方法可以更简洁地完成与第二种方法相同的任务。这是我尝试执行的一个简化示例,我无法删除.find('.input group'),因为这是我函数的输入
.find()
方法查找特定节点的后代。我注意到,.find()
不匹配基于树中当前节点上方父节点属性的元素。第一个查找返回0个元素,但第二个查找返回我搜索的元素。我的问题是,这是find方法所允许的选择器模式的限制吗?find是唯一具有此限制的jquery函数吗?我希望这两个函数都返回相同的元素。另外,还有另一种jquery方法可以更简洁地完成与第二种方法相同的任务。这是我尝试执行的一个简化示例,我无法删除.find('.input group')
,因为这是我函数的输入
$(文档).find('.input group').find('.form group.form control'))
$(文档).find('.input group').find('.form control').filter('.form group.form control'))
查找元素的后代。你要找的是父母,然后是后代
您可以找到.input group
,然后使用向后遍历DOM到“最近的”。表单组
,然后可以向下导航到。表单控件
,如下所示:
$(document).find('.input-group').closest('.form-group').find(".form-control")
$(document).find('.input-group').parent().find(".form-control")
或者您可以使用回溯到。形成组
,如下所示:
$(document).find('.input-group').closest('.form-group').find(".form-control")
$(document).find('.input-group').parent().find(".form-control")
我更喜欢
.closest()
,因为如果在.input group
和form group
之间添加另一个元素,那么父级会有所不同,但是。closest
仍然可以工作。为什么不使用$('.form group.input group.form control')
我意识到在这个简单的例子中我可以做到这一点。这就是为什么我说我不能删除.find('.input group')
。我的函数接受jquery对象,我无法控制输入。我只是想找到输入的所有子体,如果它是从文档根目录运行的,'.form group.form control'选择器,那么它将匹配该选择器。这就是我所怀疑的。我希望其他jquery方法,如.filter()
和.is()
在处理选择器时会考虑父节点,.find()
或其他后代搜索函数也会有这种行为。不幸的是,我可能不得不坚持使用我的.find().filter()
解决方案,因为我不知道函数的输入是位于DOM中.form group
元素上方还是下方的jquery对象,所以我不能使用.closest()
@park896来添加到该答案中,您也可以使用$('.form-group:has(.input-group).form-control')
也有相同的功能。不过我不知道什么更快。。。
$('.form-group .input-group').find('.form-control');