我试图理解jquery中find()和nearest()之间的区别。以下是我使用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
值显示为未定义。任何人都可以告诉我为什么它显示为未定义?当我应该使用nearest()和find()时。
答案 0 :(得分:2)
<强> FIND 强>
描述:获取当前集合中每个元素的后代 匹配的元素,由选择器,jQuery对象或元素过滤。
示例:强>
$(selector1).find(selector2)
搜索selector1
元素的后果并返回与selector2
匹配的 所有元素 。
<强> CLOSEST 强>
描述:对于集合中的每个元素,获取第一个元素 通过测试元素本身并遍历来匹配选择器 通过DOM树中的祖先。
示例强>
$(selector1).closest(selector2)
选择元素selector1
,然后向上遍历dom并返回与selector2
<匹配的 第一个元素 / p>
答案 1 :(得分:2)
closest()
是在树上,进入父母,包括当前元素。 find()
正在树上看着孩子和孩子的孩子:
var form1 = $("input").closest("form").attr("action");
答案 2 :(得分:1)