jquery中find和nearest之间的区别

时间:2017-05-31 14:34:41

标签: javascript jquery

我试图理解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()时。

3 个答案:

答案 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)

closest

find

最近的将在父元素中找到与选择器匹配的内容。

查找将进入子元素以查找与选择器的匹配。

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