我试图了解jQuery中的find((和clastest((之间的区别。以下是我使用jQuery的简单代码。*这只是一个虚拟形式。我只想了解它们之间的区别。因此,不要以为我将如何处理这种简单的形式。*
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function myFunction(){
var form = $("div#d1").find("form").attr("action");
var form1 = $("div#d1").closest("form").attr("action");
alert(form+form1);
}
</script>
</head>
<body>
<div id="d1">
<p id="p1">Click on this paragraph.</p>
<p id="p2">Click on this paragraph.</p>
<form id="f1" action="aaa">
<input type="text" value="submit">
</form>
<form id="f2" action="bbbbb">
<input type="text" value="submit">
</form>
<form id="f3" action="ccb">
<input type="text" value="submit">
</form>
<input type="submit" value="submit" onclick="myFunction()">
</div>
</body>
</html>
当我单击提交按钮时,var form1
值显示为未定义。谁能告诉我为什么它显示为不确定?同样,当我应该使用近距离((和find((。
closest()
是将树爬上父母,包括当前元素。 find()
正在沿着树木看着孩子和孩子的孩子:
var form1 = $("input").closest("form").attr("action");
查找
描述:获取当前集合中每个元素的后代 匹配的元素,由选择器,jQuery对象或元素过滤。
示例:
$(selector1).find(selector2)
搜索selector1
元素的死者和返回所有元素匹配selector2
。
最近
描述:对于集合中的每个元素,获取第一个元素 通过测试元素本身和遍历选择器来匹配选择器 通过其祖先在DOM树中。
示例
$(selector1).closest(selector2)
选择元素selector1
,然后将DOM向上遍历,然后返回第一个元素与selector2
最近
查找
最近将在父元素中上升以找到与选择器的匹配。
查找将下降到子元素中以找到与选择器的匹配。
两者都将在经过父/子元素之前首先测试初始元素。