使用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 相关文章推荐
用window.location.href实现刷新另个框架页面
Mar 07 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
input输入框内容实时监测(附代码)
Aug 15 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
JS正则表达式封装与使用操作示例
May 15 Javascript
在layui tab控件中载入外部html页面的方法
Sep 04 Javascript
vuex实现像调用模板方法一样调用Mutations方法
Nov 06 Javascript
vue-cli3 取消eslint校验代码的解决办法
Jan 16 Javascript
微信小程序多列表渲染数据开关互不影响的实现
Jun 05 Javascript
JavaScript实现前端网页版倒计时
Mar 24 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获取文件相对路径的方法
2015/02/26 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
python中threading超线程用法实例分析
2015/05/16 Python
Python selenium如何设置等待时间
2016/09/15 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Python如何使用函数做字典的值
2019/11/30 Python
django迁移文件migrations的实现
2020/03/31 Python
python实现在线翻译
2020/06/18 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
如何保障Web服务器安全
2014/05/05 面试题
拓展培训心得体会
2014/01/04 职场文书
学习经验演讲稿
2014/05/10 职场文书
英语教研活动总结
2014/07/02 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
课程设计感想范文
2015/08/11 职场文书
2019财务转正述职报告
2019/06/27 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle