使用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 相关文章推荐
JavaScript省市联动实现代码
Feb 15 Javascript
JQuery获取表格数据示例代码
May 26 Javascript
JavaScript中DOM详解
Apr 13 Javascript
AngularJS控制器controller正确的通信的方法
Jan 25 Javascript
jquery判断input值不为空的方法
Jun 05 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
详解webpack与SPA实践之开发环境搭建
Dec 18 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
JQuery animate动画应用示例
May 14 jQuery
详解mpvue中使用vant时需要注意的onChange事件的坑
May 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
PHP 批量删除 sql语句
2009/06/05 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
三级下拉菜单的js实现代码
2011/05/23 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
详解Python中的多线程编程
2015/04/09 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
python WindowsError的错误代码详解
2017/07/23 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
django中ImageField的使用详解
2020/12/21 Python
python 如何在测试中使用 Mock
2021/03/01 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
餐饮营销方案
2014/02/23 职场文书
婚前协议书范本
2014/04/15 职场文书
我的画教学反思
2014/04/28 职场文书
学习十八大宣传标语
2014/10/09 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
会议承办单位欢迎词
2015/09/30 职场文书