使用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 相关文章推荐
HTML Dom与Css控制方法
Oct 25 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
js获取内联样式的方法
Jan 27 Javascript
浅谈javascript中return语句
Jul 15 Javascript
JS查找字符串中出现次数最多的字符
Sep 05 Javascript
js阻止冒泡和默认事件(默认行为)详解
Oct 20 Javascript
vue 表单输入格式化中文输入法异常问题
May 30 Javascript
vue mounted组件的使用
Jun 18 Javascript
利用JavaScript将Excel转换为JSON示例代码
Jun 14 Javascript
jquery实现的放大镜效果示例
Feb 24 jQuery
JavaScript实现移动端拖动元素
Nov 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
用javascript实现画板的代码
2007/09/05 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
在python中bool函数的取值方法
2018/11/01 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
django自定义模板标签过程解析
2019/12/14 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
CSS3实现时间轴特效
2020/11/02 HTML / CSS
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
客服主管岗位职责
2013/12/13 职场文书
《乞巧》教学反思
2014/02/27 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
颐和园导游词
2015/01/30 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
初婚未育证明样本
2015/06/18 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
如何自己动手写SQL执行引擎
2021/06/02 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL