【jQuery点滴】find选择器

jQuery有非常强大的Sizzle引擎来实现选择器,jQuery做了优化,他们能很好的工作,你一般不必担心太多。然而,我们可以稍微做一些改进,将可以使你的脚本略有提高。

一般在jquery中能不要用Sizzle引擎就不要用,当然前面说了只要有可能,就尽量使用.find()方法。比如:

[code=”javascript”]

//?Fine?in?modern?browsers,?though?Sizzle?does?begin?”running”

$(‘#someDiv?p.someClass’).hide();

//?Better?for?all?browsers,?and?Sizzle?never?inits.

$(‘#someDiv’).find(‘p.someClass’).hide();

[/code]

上面两行代码执行的结果是完全一样的,但是下面一句的效率要比上面一句的执行效率高。
现代浏览器(除IE6,IE7)都有QuerySelectorAll支持,能允许你像CSS选择器一样获取对象,而不需要用到jQuery中的Sizzle引擎。jQuery会在使用自己的引擎之前检查是否存在这个函数。

对于IE6/IE7,就需要jQuery使用Sizzle引擎,jQuery会把你的选择器转化成一个数组,并且通过从右往左来迭代匹配。通过正则表达式匹配页面每一个元素,所以你的可以尽量减少选择器的层级,尽可能的使用最右边的选择器,比如使用ID选择器等;这个规则和我们的css的查找规则是一直的,如果你要优化css选择器也要知道这个规则:从右往左来迭代匹配!

尺度把握:

1.保持代码简单

2.尽可能的使用find()查找,使用浏览器的原生查找函数

3.尽可能使用最右边的选择器,比如ID等

赞(0) 打赏
未经允许不得转载:WEB前端开发 » 【jQuery点滴】find选择器

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    呵呵,不错。
    以后得抽些时间研究一下JQ的源代码

    pzling8年前 (2010-10-04)回复
  2. #-48

    尽可能使用最右边的选择器

    没明白是什么意思,望搂主指教….

    任杰8年前 (2011-01-05)回复
    • 减少不必要的查询

      8年前 (2011-01-05)回复
  3. #-47

    $(‘#someDiv p.someClass’).hide();
    这个选择器,并没有触发sizzle进行选择,而是会使用浏览器的querySelectorAll,没明白楼主说的慢是慢在哪里?是指会触发sizzle方法的调用吗?

    itjohna1年前 (2017-09-02)回复

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏