使用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对象和DOM对象相互转化
Apr 24 Javascript
基于Jquery的实现回车键Enter切换焦点
Sep 14 Javascript
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
JavaScript每天定时更换皮肤样式的方法
Jul 01 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
JavaScript中this的用法实例分析
Dec 19 Javascript
详解使用vue实现tab 切换操作
Jul 03 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
Vuex的各个模块封装的实现
Jun 05 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
Jul 27 Javascript
Vue实现小购物车功能
Dec 21 Vue.js
在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 版本]
2007/03/20 PHP
56.com视频采集接口程序(PHP)
2007/09/22 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
Python面试题集
2012/03/08 面试题
平面设计师工作职责范文
2013/12/03 职场文书
家电业务员岗位职责
2014/03/10 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
销售活动策划方案
2014/08/26 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
助学感谢信范文
2015/01/21 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
Python实现自动玩连连看的脚本分享
2022/04/04 Python