使用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代码(使用jquery性能问题)
Jun 30 Javascript
JS倒计时代码汇总
Nov 25 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
Jquery Ajax xmlhttp请求成功问题
Feb 04 Javascript
js实现Select头像选择实时预览代码
Aug 17 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
Dec 07 Javascript
JS实现520 表白简单代码
May 21 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 25 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
javascript 数组(list)添加/删除的实现
Dec 17 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
linux实现php定时执行cron任务详解
2013/12/24 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
跟老齐学Python之正规地说一句话
2014/09/28 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
浅谈django 重载str 方法
2020/05/19 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
精彩自我鉴定
2014/01/16 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
三八妇女节活动总结
2014/05/04 职场文书
入职担保书怎么写
2014/05/12 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
经销商会议开幕词
2016/03/04 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技