使用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 Tips(4) 一些关于提高JQuery性能的Tips
Dec 19 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
Jan 08 Javascript
JavaScript转换农历类实现及调用方法
Jan 27 Javascript
jQuery中:submit选择器用法实例
Jan 03 Javascript
javascript正则表达式之分组概念与用法实例
Jun 16 Javascript
react实现pure render时bind(this)隐患需注意!
Mar 09 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
vue.js全局API之nextTick全面解析
Jul 07 Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 Javascript
vue iview实现动态新增和删除
Jun 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
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
PHP实现验证码校验功能
2017/11/16 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
vue项目中添加单元测试的方法
2018/07/21 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
vuex入门最详细整理
2020/03/04 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
简单谈谈Python的pycurl模块
2018/04/07 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
家长评语大全
2014/01/22 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
农村文化建设标语
2014/10/07 职场文书
小石潭记导游词
2015/02/03 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
个人催款函范文
2015/06/24 职场文书
区域销售大会开幕词
2016/03/04 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
JavaScript实现队列结构过程
2021/12/06 Javascript