Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时使用jQuery的.find()_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript 何时使用jQuery的.find()

Javascript 何时使用jQuery的.find(),javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我什么时候可以使用jQuery 比如说, $'tr'.find'.someClass';相当于$'tr.someClass' 那么,什么时候可以作为一个很好的例子来说明什么时候可以使用.find over a stright选择器呢 还有,哪一个性能更好?选择器是否比.find快?答案尽可能快 它总是比具有子项/多项/CSS/上下文选择器更高效,并且是执行最快的遍历机制 P>你甚至可以考虑不使用它,如果你只想选择直接儿童的项目,而那些孩子恰巧有他们不想选择的孩子的类。这是一份针对.child

我什么时候可以使用jQuery

比如说,

$'tr'.find'.someClass';相当于$'tr.someClass'

那么,什么时候可以作为一个很好的例子来说明什么时候可以使用.find over a stright选择器呢

还有,哪一个性能更好?选择器是否比.find快?

答案尽可能快

它总是比具有子项/多项/CSS/上下文选择器更高效,并且是执行最快的遍历机制


<> P>你甚至可以考虑不使用它,如果你只想选择直接儿童的项目,而那些孩子恰巧有他们不想选择的孩子的类。这是一份针对.children的工作,但这种情况非常罕见。

上面的答案很好,但只是想添加。find是一种基于后代的搜索。因此,它将查找所选Dom元素的所有子元素。

.find只用于搜索表示Dom元素的jQuery对象的子对象

一个示例用例是将表示表单元素的jQuery对象传递到表单解析函数中,然后使用.find从表单的子输入中获取不同的值

与每次要获取元素时都将表单转换为jQuery对象不同,将jQuery表单对象分配给变量,然后使用.find获取输入更便宜

在代码中,这是:

var $form = $('#myFormId'),
    firstName = $form.find('input[name="firstName"]').val(),
    lastName = $form.find('input[name="lastName"]').val();
比这个便宜:

var firstName = $('#myFormId input[name="firstName"]').val(),
    lastName = $('#myFormId input[name="lastName"]').val();
它也比使用.children更便宜,请参见,除非您正在搜索正在操作的jQuery对象的直接子对象


希望这是有意义的:

这取决于您选择的内容

随着$'tr'选择的元素数量增加,.find将变得更加昂贵

一般来说,最好尽可能减少接触元素的次数。当您只处理两个元素(父元素和子元素)时,.find显然会更快,因为只有一个父元素获取其子元素并过滤到选择器。但是,当有,比如说,200个家长时,它必须迭代所有200个,并在每个家长中搜索孩子。通过使用选择器开始,您永远不会接触所有父元素,而是直接转到子元素。即使如此,不同浏览器的性能也会有所不同


花更少的时间担心这些微观优化,直到它成为您试图解决的真正问题,在这一点上,解决一个问题,而不是试图找出一个一般规则来遵循。

。实际上,“查找”比“选择器”更快。jQuery解析器必须更努力地使用包含多个部分的选择器,而不是选择某些元素并对其进行过滤。相关:酷,非常感谢。另外一个问题是,如果您有$'.someClass',包含Element,会有区别吗?还是。找到更快的吗?@KyleMuir前者直接变成后者。@MattBall很酷,谢谢。我现在更清楚地了解了整个情况:除非我在这里搞砸了什么,否则这个不太简单的性能似乎表明了相反的情况:通过QuerySelector运行的任何东西都不应该比在一个非琐碎的文档上查找更快?@KevinB正是这样。在原来的问题中,我只能假设页面上有多个tr。查找可能会慢一些。与原始问题进行比较的选择器也会慢一些。为此,我们完全同意不必担心微观优化,这个特定的问题纯粹是学术性的。工作中有人问我他们之间的区别,我很好奇,因为我不了解自己。