Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery基于匹配父类的类选择器查找子类_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery基于匹配父类的类选择器查找子类

Javascript jQuery基于匹配父类的类选择器查找子类,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试使用jquery.find()方法查找特定节点的后代。我注意到,.find()不匹配基于树中当前节点上方父节点属性的元素。第一个查找返回0个元素,但第二个查找返回我搜索的元素。我的问题是,这是find方法所允许的选择器模式的限制吗?find是唯一具有此限制的jquery函数吗?我希望这两个函数都返回相同的元素。另外,还有另一种jquery方法可以更简洁地完成与第二种方法相同的任务。这是我尝试执行的一个简化示例,我无法删除.find('.input group'),因为这是我函数的输入

我正在尝试使用jquery
.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');