高效jQuery选择器的5个技巧实例分析

 更新时间:2019年11月26日 08:41:53   作者:在线疯狂  
这篇文章主要介绍了高效jQuery选择器的5个技巧,结合实例形式总结分析了jquery选择器使用过程中发的各种常用技巧,需要的朋友可以参考下

本文实例讲述了高效jQuery选择器的5个技巧。分享给大家供大家参考,具体如下:

顾名思义,jQuery专注于查询(queries)。库的核心允许你使用CSS选择器语法,以及通过在集合上执行函数,来查找DOM元素。

jQuery使用浏览器原生API方法获取DOM集合。现代浏览器支持getElementsByClassName, querySelector以及querySelectorAll(可以解析CSS语法)。然而,老版本的浏览器可能只提供getElementById以及getElementByTagName。在最坏的情况下,jQuery的Sizzle引擎必须解析选择器字符串来匹配元素。

下面是可以帮助你优化jQuery选择器的5点提示:

1. 尽量使用ID

HTML ID属性在每一个页面上都是唯一的,并且即使老版本的浏览器也可以非常迅速地定位一个元素:

$("#myelement");

2. 避免只使用类名称

下面的类选择器在现代浏览器中执行迅速:

$(".myclass");

不幸的是,在老版本的浏览器,比如IE6/7和Firefox 2,jQuery必须检查页面上的每一个元素来确定“myclass”是否被元素所包含。

如果通过标签名加以限定可以让选择器更加的高效,例如:

$("div.myclass");

jQuery现在可以将搜索范围限定在DIV元素。

3. 保持简单!

避免过于复杂的选择器。除非你要查找一个极其复杂的HTML文档,很少有需要使用多于2,3个修饰符的情况。

考虑下面的复杂选择器:

$("body #page:first-child article.main p#intro em");

p#intro 一定是唯一的,因而选择器可以这样简化:

$("p#intro em");

4. 从左往右增加特异性

了解一点jQuery选择器引擎的相关知识是有帮助的。查找首先从最后一个选择器开始,因此,在老版本的浏览器中,一个类似于这样的查询:

$("p#intro em");

将所有的em元素加载进一个数组。然后判断每一个节点的父元素,进而排除那些找不到p#intro父节点标签的元素。如果页面上包含数百个em标签的话,查询会变得十分的低效。

根据你的文档,查询可以通过优先使用最佳限定符来获得优化。其结果可以作为子选择器的出发点,例如:

$("em", $("p#intro")); // or
$("p#intro").find("em");

5. 避免重复选择

很少需要重复使用同样的选择器两次。下面的代码对每一个p标签都选择了3次:

$("p").css("color", "blue");
$("p").css("font-size", "1.2em");
$("p").text("Text changed!");

记住jQuery支持链式操作;多个方法可以应用于同一个集合之上。因此,同样效果的代码可以通过单一的选择器重写:

$("p").css({ "color": "blue", "font-size": "1.2em"}).text("Text changed!");

如果需要多次使用同一组元素集合,你应该将jQuery对象使用变量加以缓存,例如:

var $p = $("p");
$p.css("color", "blue");
$p.text("Text changed!");

与标准的DOM集合不同,jQuery集合并不是实时的,并且对象不会在paragraph标签从文档中新增或者移除时自动更新。你可以利用这个限制,创建DOM集合,并在需要时将其传递给jQuery函数,例如:

var p = document.getElementByTagName("p");
$(p).css("color", "blue");
// update the DOM
$(p).text("Text changed!");

原文链接:5 Tips for More Efficient jQuery Selectors

更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery页面元素操作技巧汇总》、《jQuery常见事件用法与技巧总结》、《jQuery常用插件及用法总结》、《jQuery扩展技巧总结》及《jquery选择器用法总结

希望本文所述对大家jQuery程序设计有所帮助。

相关文章

  • 谈谈Jquery ajax中success和complete有哪些不同点

    谈谈Jquery ajax中success和complete有哪些不同点

    jquery ajax中success和complete有哪些不同点呢?大家都了解吗,接下来通过本篇文章给大家介绍jquery ajax中success和complete的不同点,感兴趣的朋友一起学习吧
    2015-11-11
  • 使用jQuery操作Cookies的实现代码

    使用jQuery操作Cookies的实现代码

    Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术
    2011-10-10
  • jQuery创建及操作xml格式数据示例

    jQuery创建及操作xml格式数据示例

    这篇文章主要介绍了jQuery创建及操作xml格式数据,结合实例形式分析了jQuery针对xml格式数据的创建、解析、添加等相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • JQuery datepicker 使用方法

    JQuery datepicker 使用方法

    jQuery UI很强大,其中的日期选择插件Datepicker是一个配置灵活的插件,我们可以自定义其展示方式,包括日期格式、语言、限制选择日期范围、添加相关按钮以及其它导航等
    2011-05-05
  • jQuery日历插件datepicker用法详解

    jQuery日历插件datepicker用法详解

    这篇文章主要为大家详细介绍了jQuery日历插件datepicker用法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Jquery ui css framework

    Jquery ui css framework

    Jquery ui css framework是jquery ui中的一个样式框架,可以利用jquery Theme roller 来生成自己想要的css样式效果。我们可以利用jquery ui的一些框架来开发出基于jquery ui css framework效果的插件来。
    2010-06-06
  • jQuery实现三级菜单的代码

    jQuery实现三级菜单的代码

    上周新接手一个网站建设的活儿,其中有需要要jquery代码实现三级菜单的需求,其实说难也不难,下面小编把代码分享给大家,供大家参考
    2016-05-05
  • jquery获取及设置outerhtml的方法

    jquery获取及设置outerhtml的方法

    这篇文章主要介绍了jquery获取及设置outerhtml的方法,实例分析了jQuery实现针对outerhtml操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • JQuery调webservice实现邮箱验证(检测是否可用)

    JQuery调webservice实现邮箱验证(检测是否可用)

    JQuery调webservice实现邮箱验证:判断邮箱是否存在如果不存在提示可以使用否从提示该邮箱已存在请重新输入,感兴趣的朋友可以参下哈,希望对你有所帮助
    2013-05-05
  • jQuery实现图片左右滚动特效

    jQuery实现图片左右滚动特效

    这篇文章主要介绍了jQuery合作伙伴左右滚动特效,功能实现非常简单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08

最新评论