2017-05-31 236 views
1

我想了解find()和最接近()在jquery之间的区别。以下是我用jquery编写的简单代码。 *这只是一个虚拟形式。我只是想了解它们之间的区别。所以不要以为这个简单的表单我该怎么做。 *查找和最接近的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> 

当我点击我的提交按钮,0​​值显示为未定义。谁能告诉我为什么它显示为undefined?另外当我应该使用最接近()和find()。

+3

'nearest()'查找树,'find()'查找下来。 –

+0

[永远阅读牌匾](http://api.jquery。com /) – evolutionxbox

+0

@MatthewJohnson所以如果我把一个窗体标签放在div上面,它会显示var form1的值吗? – sreehari

回答

1

FIND

说明:获取每个元素的后代在当前组的 匹配的元素,通过一个选择器,jQuery对象,或元件过滤。

实施例:

$(selector1).find(selector2)查询的selector1元件的死者并返回所有元素匹配selector2这一点。

CLOSEST

说明:对于组中的每一个元素,得到的第一个元素 通过测试元件本身和DOM树向上遍历 通过它的祖先选择相匹配。

$(selector1).closest(selector2)选择元件selector1,然后向上遍历DOM并返回第一元件selector2

1

closest()匹配是上的树中,成包括当前元素在内的父母。 find()正在下降树看在孩子的,孩子的和的孩子的:

var form1 = $("input").closest("form").attr("action"); 
+0

所以我需要做什么,如果我想在我的函数中获取var form1的值?我应该在哪里放置表单标签在我的代码? – sreehari

+0

@ÁlvaroGonzález可以请你修改上面的代码,以便我可以获取var form和var form1的值。 – sreehari

+0

你很难理解你想要达到的目标。 3种形式?每个表单有1个输入?和一个提交按钮外的形式..无论如何,我已经更新了我的答案与'最接近' – PierreDuc

1

closest

find

最近会涨的父元素找到匹配的选择。

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

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

+0

所以我需要做的,如果我想在我的函数中获取var form1的值? – sreehari

+0

@sreehari - 你想用这两种形式做什么?你的设置没有意义。 – ps2goat

+0

这只是为了理解最接近和找到的区别。我在我的项目中看到很多代码,他们使用find和close。所以我只是想知道它们之间的区别,以及我应该使用它们的时间。 – sreehari