使用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 类twitter的文本字数限制带提示效果插件
Apr 16 Javascript
jQuery下通过$.browser来判断浏览器.
Apr 05 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
Dec 25 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
Sep 12 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
Mar 27 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
JS判断日期格式是否合法的简单实例
Jul 11 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
vue绑定设置属性的多种方式(5)
Aug 16 Javascript
vue.js iview打包上线后字体图标不显示解决办法
Jan 20 Javascript
JavaScript将数组转换为链表的方法
Feb 16 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
FCKeditor的安装(PHP)
2007/01/13 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python else语句在循环中的运用详解
2020/07/06 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
教师先进工作者事迹材料
2014/05/01 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
护林防火标语
2014/06/27 职场文书
验房委托书
2014/08/30 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python