使用jQuery在对象中缓存选择器的简单方法


Posted in Javascript onJune 30, 2015

 当使用像jQuery这样的库时,开发者通常会使用选择器来访问和操作DOM中的元素。当一个选择在页面上被反复的访问时,把它缓存起来以获得更好的性能是个不错的想法。

让我们看一个例子,
 

jQuery(document).ready(function() {
  jQuery('#some-selector').on('hover', function() {
    jQuery(this).fadeOut('slow').delay(400).fadeIn();
    console.log(jQuery(this).text());
  });
 
  jQuery('#another-element').on('hover', function() {
    jQuery(this).slideUp();
  });
 
  jQuery('#some-selector').on('click', function() {
    alert('You have clicked a featured element');
  });
 
  jQuery('#another-element').on('mouseout', function() {
    jQuery(this).slideUp();
  });
});

也许你已经注意到,ID ‘some-selector' 和 ‘another-element' 在上面的代码片段中被提到了两次。通过把这些选择器保存到变量里,可以使他们能被复用,并且避免了重复选择操作。

当你开始在你的jQuery代码里积攒出各种各样的选择器时,你就能领会到在对象中缓存选择器 ? 以键值对的形式 ? 是多么美好。这使得你更容易在脚本中的任何地方访问它们,并且维护这些选择器也是轻而易举的事。

缓存选择器后,改进过的代码会像这样,
 

var someNamespace_Dom = {
  someSelector : 'jQuery("#some-selector")',
  anotherElement: 'jQuery("#another-element")',
};
 
jQuery(document).ready(function() {
  someNamespace_Dom.someSelector.on('hover', function() {
    jQuery(this).fadeOut('slow').delay(400).fadeIn();
    console.log(jQuery(this).text());
  });
  someNamespace_Dom.anotherElement.on('hover', function() {
    jQuery(this).slideUp();
  });
  someNamespace_Dom.someSelector.on('click', function() {
    alert('You have clicked a featured element');
  });
  someNamespace_Dom.anotherElement.on('mouseout', function() {
    jQuery(this).slideUp();
  });
});

由于选择器已经被缓存到变量中,DOM 树不再需要被重复遍历来寻找被操作的元素。‘someNamespace_Dom' 对象可以被用来添加更多键值对,使得维护工作很轻松。

Javascript 相关文章推荐
基于Jquery插件开发之图片放大镜效果(仿淘宝)
Nov 19 Javascript
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 Javascript
js实现tab切换效果实例
Sep 16 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
JavaScript制作简单分页插件
Sep 11 Javascript
JS实现简单的天数计算器完整实例
Apr 28 Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 Javascript
angular4 如何在全局设置路由跳转动画的方法
Aug 30 Javascript
javaScript实现游戏倒计时功能
Nov 17 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
js实现贪吃蛇游戏 canvas绘制地图
Sep 09 Javascript
在Node.js应用中读写Redis数据库的简单方法
Jun 30 #Javascript
javascript日期计算实例分析
Jun 29 #Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 #Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 #Javascript
JavaScript实现级联菜单的方法
Jun 29 #Javascript
node.js读取文件到字符串的方法
Jun 29 #Javascript
JavaScript模拟实现键盘打字效果
Jun 29 #Javascript
You might like
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
php头像上传预览实例代码
2017/05/02 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
Python自动登录126邮箱的方法
2015/07/10 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python 生成图形验证码的方法示例
2018/11/11 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Python 读取位于包中的数据文件
2020/08/07 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
幼儿园长自我鉴定
2013/10/17 职场文书
医学生自荐信
2013/12/03 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
运动员口号
2014/06/09 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
nginx 配置指令之location使用详解
2022/05/25 Servers