正确使用jQuery选择器可以有效提高jQuery代码性能

杨新朋| 阅读:166 发表时间:2017-08-30 20:56:38 前端技术

jQuery作为前端开发中重要的javascript类库之一,发挥着构建丰富web前端的利器。但是很多人并不是非常清楚如何正确使用jQuery来达到最佳的性能。如果你觉得代码书写对于性能的影响不会那么巨大,那么我只能告诉你,当你使用jQuery开发一个复杂的动画和web应用的话,它有可能成为你性能上的终极噩梦。

在这里我讲简单介绍一下在jQuery代码书写中大家应该需要注意的几个性能问题,希望对于大家在书写高性能的web应用中有帮助,大家在书写jQuery的过程中,小阳台注意和避免这些性能的问题,才能写出高质量高性能的web应用。

jQuery中的选择器selecor是大家经常使用的强大功能,事实上jQuery提供给我们非常丰富的手段来使用选择器定位DOM元素。但是很少有开发人员会考虑使用不同的选择器来处理性能问题。这里我们将介绍几种常用的选择器,及其它们之间的性能差异。

第一种情况:$("#id")

使用id来定位DOM元素无疑是最佳提高性能方式,因为jQuery底层将直接调用本地方法document.getElementbyId(),如果熟悉javascript的朋友应该了解这个方法将直接通过元素id来返回对应的元素。当然,如果这个方式不能直接找到你需要的元素,那么你可以考虑调用.find()方法,这种方法可以有效的缩小你定位的DOM元素。。如下:

$("#gbid").find("div")

第二种情况:$("p"),$("div"),$("input")

使用标签名是第二优化选择,因为jQuery将直接调用本地方法document.getElementsByTagname()来定位DOM元素。

第三种情况:$(".class")

使用.class方法对于我们来说稍微复杂些,对于比较新的浏览器例如,IE9,它支持本地方法document.getElementsByClassName(),而对于老的浏览器,例如,IE8或者更早版本来说,不得不使用DOM搜索方式来实现,自然会对于性能产生比较大的影响。所以大家得选择使用。

第四种情况:$("[attribute=value]")

对于利用属性来定位DOM元素,本地javascript方法中并没有直接的实现。所以大都都是使用DOM搜索方式来达到效果,很多现代浏览器支持querySelectorAll()方法,但是不同浏览器的性能还是有区别。总体来说,使用这种方式来定位DOM元素,并不是非常理想。所以为了获得更好的优化效果,你需要尽量避免这个对性能有害的使用方式。

第五种情况:$(":hidden")

和上面使用属性来定位DOM的方式类似,这种伪选择器也同样没有本地js方法来直接实现。而且jQuery需要搜索每一个元素来定位这个选择器,将会对你的应用带来比较大的性能问题。所以大家尽量不要使用,当然,如果你非要使用的话,请先是用find方法定位父元素,然后,再使用这个选择器,这样会帮助你很好的优化性能,如下:

$("#gbdiv").find(":hidden") 

以上是一个基本使用选择器的规则,自上而下性能依次下降,如果大家在开发中使用选择器,请遵循以上这个简单的优化性能规则。

本文由杨新朋发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。