Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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使用标记名查找方法和特定性_Javascript_Jquery - Fatal编程技术网

Javascript jQuery使用标记名查找方法和特定性

Javascript jQuery使用标记名查找方法和特定性,javascript,jquery,Javascript,Jquery,我已经阅读了如何优化jQuery。我只是对一点有疑问,但我在这一点上找不到参考资料 给定div.my-class和.my-class在DOM中表示相同的东西(即所有带有.my-class的标记都是divs),通常执行以下操作会更快: $('#my-id').find('div.my-class')... 或 简单解释一下潜在的原因就好了。性能影响是否显著?jQuery站点上的示例显示了.find('div.my-class'),但这可能只是一个示例 编辑:运行了一个似乎是$(“#我的id”).

我已经阅读了如何优化jQuery。我只是对一点有疑问,但我在这一点上找不到参考资料

给定div.my-class和.my-class在DOM中表示相同的东西(即所有带有.my-class的标记都是divs),通常执行以下操作会更快:

$('#my-id').find('div.my-class')...

简单解释一下潜在的原因就好了。性能影响是否显著?jQuery站点上的示例显示了
.find('div.my-class')
,但这可能只是一个示例


编辑:运行了一个似乎是$(“#我的id”).find(“.my class”)的程序,速度要快一点。可能find('div.my-class')执行一个小的额外任务。这个问题的重点是在处理查找方法和特定性时获得良好的实践导向。我将暂时不讨论这个问题,看看是否有人对我们使用jsPerf的结果有潜在的原因。感谢@dnozay提供的额外测试。

不要相信任何没有基准的人来证明这一点

使用此准备代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<div id="container">
  <div id="my-id">
    <div class="my-class"></div>
    <div class="foobar"></div>
    <div class="my-class"></div>
    <span class="my-class"></span><!-- should not be matched? -->
  </div>
</div>
在我的浏览器上比以下速度慢3倍:

$('#my-id').find('.my-class');
但是它们不会返回相同的元素。 因此,这取决于html的外观

向下钻取方法。 此查询试图同时检查所有方面:

$('#my-id div.my-class')
此查询通过匹配id提前剪切元素:

$('#my-id').find('div.my-class')
此查询将更进一步,首先匹配类,然后匹配标记

$('#my-id').find('.my-class').filter('div');
更多数字 如果您已经看到了,那么检查,这将添加另一个测试用例


不要相信任何没有基准来证明这一点的人

使用此准备代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<div id="container">
  <div id="my-id">
    <div class="my-class"></div>
    <div class="foobar"></div>
    <div class="my-class"></div>
    <span class="my-class"></span><!-- should not be matched? -->
  </div>
</div>
在我的浏览器上比以下速度慢3倍:

$('#my-id').find('.my-class');
但是它们不会返回相同的元素。 因此,这取决于html的外观

向下钻取方法。 此查询试图同时检查所有方面:

$('#my-id div.my-class')
此查询通过匹配id提前剪切元素:

$('#my-id').find('div.my-class')
此查询将更进一步,首先匹配类,然后匹配标记

$('#my-id').find('.my-class').filter('div');
更多数字 如果您已经看到了,那么检查,这将添加另一个测试用例


不要相信任何没有基准来证明这一点的人

使用此准备代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<div id="container">
  <div id="my-id">
    <div class="my-class"></div>
    <div class="foobar"></div>
    <div class="my-class"></div>
    <span class="my-class"></span><!-- should not be matched? -->
  </div>
</div>
在我的浏览器上比以下速度慢3倍:

$('#my-id').find('.my-class');
但是它们不会返回相同的元素。 因此,这取决于html的外观

向下钻取方法。 此查询试图同时检查所有方面:

$('#my-id div.my-class')
此查询通过匹配id提前剪切元素:

$('#my-id').find('div.my-class')
此查询将更进一步,首先匹配类,然后匹配标记

$('#my-id').find('.my-class').filter('div');
更多数字 如果您已经看到了,那么检查,这将添加另一个测试用例


不要相信任何没有基准来证明这一点的人

使用此准备代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<div id="container">
  <div id="my-id">
    <div class="my-class"></div>
    <div class="foobar"></div>
    <div class="my-class"></div>
    <span class="my-class"></span><!-- should not be matched? -->
  </div>
</div>
在我的浏览器上比以下速度慢3倍:

$('#my-id').find('.my-class');
但是它们不会返回相同的元素。 因此,这取决于html的外观

向下钻取方法。 此查询试图同时检查所有方面:

$('#my-id div.my-class')
此查询通过匹配id提前剪切元素:

$('#my-id').find('div.my-class')
此查询将更进一步,首先匹配类,然后匹配标记

$('#my-id').find('.my-class').filter('div');
更多数字 如果您已经看到了,那么检查,这将添加另一个测试用例


首先,摆脱这个发现。它不需要,并导致jQuery执行两个选择器而不是一个选择器。执行一个选择器几乎总是会更快,因为它是由浏览器而不是jQuery执行的。而是像这样编写选择器:

$('#div1 .myclass');
一般来说,当你遇到这样的问题时,最好的办法就是对其进行分析。jsperf.com是这项工作的有用工具。您的结果可能会因浏览器而异

我已经创建了一个基本测试,它显示了在Chrome中使用最具体的选择器时性能会稍快一些:


首先,摆脱这个发现。它不需要,并导致jQuery执行两个选择器而不是一个选择器。执行一个选择器几乎总是会更快,因为它是由浏览器而不是jQuery执行的。而是像这样编写选择器:

$('#div1 .myclass');
一般来说,当你遇到这样的问题时,最好的办法就是对其进行分析。jsperf.com是这项工作的有用工具。您的结果可能会因浏览器而异

我已经创建了一个基本测试,它显示了在Chrome中使用最具体的选择器时性能会稍快一些:


首先,摆脱这个发现。它不需要,并导致jQuery执行两个选择器而不是一个选择器。执行一个选择器几乎总是会更快,因为它是由浏览器而不是jQuery执行的。而是像这样编写选择器:

$('#div1 .myclass');
一般来说,当你遇到这样的问题时,最好的办法就是对其进行分析。jsperf.com是这项工作的有用工具。您的结果可能会因浏览器而异

我已经创建了一个基本测试,它显示了在Chrome中使用最具体的选择器时性能会稍快一些:


首先,摆脱这个发现。它不需要,并导致jQuery执行两个选择器而不是一个选择器。执行一个选择器几乎总是会更快,因为它是由浏览器而不是jQuery执行的。而是像这样编写选择器:

$('#div1 .myclass');
一般来说,当你遇到这样的问题时,最好的办法就是对其进行分析。jsperf.com是这项工作的有用工具。您的结果可能会因浏览器而异

我已经创建了一个基本测试,它显示了在Chrome中使用最具体的选择器时性能会稍快一些:


我认为
.find('div.my-class')
会更快(虽然不是很明显),因为您正在缩小要在其中搜索的元素组。也就是说,运行一些测试(例如jpPerf)可能是最好的方法。在现代浏览器中,这两种测试之间的差异不会太大。之前