在jQuery中查找和最接近的区别



我试图了解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

匹配的

最近

查找

最近将在父元素中上升以找到与选择器的匹配。

查找将下降到子元素中以找到与选择器的匹配。

两者都将在经过父/子元素之前首先测试初始元素。

最新更新