jQuery的链式编程风格
jQuery的链式编程风格
首先本人通过一个案例来展示jQuery的链式编程风格。先写一个页面,展示一个列表,代码如下:
<body>
<div>
<ul class="menu">
<li class="level1">
<a href="#">水果</a>
<ul class="level2">
<li><a href="#">苹果</a></li>
<li><a href="#">菠萝</a></li>
<li><a href="#">香瓜</a></li>
</ul>
</li>
<li class="level1">
<a href="#">主食</a>
<ul class="level2">
<li><a href="#">面条</a></li>
<li><a href="#">馒头</a></li>
<li><a href="#">米饭</a></li>
</ul>
</li>
</ul>
</div>
</body> <script type="text/javascript">
$(function() {
$(".level1 > a").click(function() {
$(this).addClass("current").next().show().parent.siblings().children("a").removeClass("current").next().hide();
return false;
});
});
</script>
代码执行后的效果如下图所示:
上述代码的扩展效果就是通过jQuery的链式操作实现的,所有增加current类的操作、查询子元素的方法调用、动画方法的调用等都是对同一个元素进行的,所以在开始获取到一个jQuery对象后,后面的所有方法、属性的调用都通过 “.” 进行连续调用即可,这种模式就是链式操作。
为了增加代码的可读性和可维护性,我们将上面的链式代码格式的修改如下:
<script type="text/javascript">
$(function() {
$(".level1 > a").click(function() {
// 给当前的元素添加current样式
$(this).addClass("current")
// 下一个元素显示
.next().show()
// 父元素的同辈元素的子元素a移除current样式
.parent.siblings().children("a").removeClass("current")
// 他们的下一个元素隐藏
.next().hide();
return false;
});
});
</script>
经过规范格式的调整后,增加了代码的易读性,更加方便后期的维护。
与此同时,我们对于同一个jQuery对象进行链式操作时,主要遵循下面3条格式规范。
(1)对于同一个对象不超过3个操作,可以直接写成一行,代码如下:
<script type="text/javascript">
$(function() {
$("li").show().unbind("click");
});
</script>
(2)对于同一个对象的较多操作,建议每行写一个操作,代码如下:
<script type="text/javascript">
$(function() {
$(this).removeClass("mouseout")
.addClass("mouseover")
.stop()
.fadeTo("fast", 0.5)
.fadeTo("fast", 1)
.unbind("click")
.click(function() {
.......
});
});
</script>
(3)对于多个对象的少量操作,可以每个对象写一行,如果涉及子元素,可以考虑适当的缩进。代码如下:
<script type="text/javascript">
$(function() {
$(this).addClass("highLight")
.children("a").show().end()
.siblings().removeClass("highLight")
.children("a").hide();
});
</script>
以上就是有关jQuery的链式编程风格。
jQuery的链式编程风格的更多相关文章
- jQuery支持链式编程,一句话实现左侧table页+常用筛选器总结
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 原生JS实现jquery的链式编程。
这是我根据之前遇到的一个面试题,题目:用原生JS实现$("#ct").on("click",fn).attr("id"). 然后看了篇jqu ...
- 模拟jquery底层链式编程
//特点1:快级作用域,程序启动自动执行 //内部的成员变量,外部无法访问(除了var) //简单的函数链式调用 function Dog(){ this.run=function(){ alert( ...
- JQuery的链式编程,隐式迭代是啥意思?
链式编程 1.好处 "一句话,链式编程可以省去很多重复的代码." 这话什么意思呢?举个例子. /*设置obj对象的两个属性*/ //普通做法是这样的 obj.name = '小明' ...
- JQuery的链式编程与隐式迭代
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- iOS开发技巧系列---使用链式编程和Block来实现UIAlertView
UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...
- jQuery插件编写及链式编程模型小结
JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQu ...
- jQuery编程基础精华01(jQuery简介,顶级对象$,jQuery对象、Dom对象,链式编程,选择器)
jQuery简介 什么是jQuery? jQuery就是一个JavaScript函数库,没什么特别的.(开源)联想SQLHelper类 jQuery能做什么?jQuery是做什么的? jQuery本身 ...
- jQuery插件编写及链式编程模型
jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...
随机推荐
- Android+Java Web+MySQL实现登录注册
1 前言&概述 这篇文章是基于此处文章的更新,更新了一些技术栈,更加贴近实际需要,以及修复了若干的错误. 这是一个前端Android+后端Java/Kotlin通过Servelt进行后台数据库 ...
- JavaCV 视频滤镜(LOGO、滚动字幕、画中画、NxN宫格)
其实,在JavaCV中除了FFmpegFrameGrabber和FFmpegFrameRecorder之外,还有一个重要的类,那就是FFmpegFrameFilter. FFmpegFrameFilt ...
- elasticsearch jvm优化
测试环境elasticsearch jvm 4G jdk1.8 [serveradm@test-log-server elasticsearch]$ java -version java versio ...
- Java获取多线程执行结果方式的归纳与总结
在日常的项目开发中,我们会经常遇到通过多线程执行程序并需要返回执行结果的场景,下面我们就对获取多线程返回结果的几种方式进行一下归纳,并进行简要的分析与总结. 一.Thread.join 在一些简单的应 ...
- Android埋点技术概览
注:本文同步发布于微信公众号:stringwu的互联网杂谈Android无埋点技术概览 本文是Android无埋点系列的开篇---埋点技术概览 1 背景 埋点是数据产品经理(分析师)基于业务需求,对用 ...
- windows黑窗口命令笔记
windows有个黑窗口,吃惊吧!意外吧!! 哈哈,我是真的有些吃惊的!! nslookup ipconfig /all ipconfig /flushdns windows 声音修复 windows ...
- 【MySQL】Mysql(InnoDB引擎) 索引的数据结构为什么选择B+Tree
1.B+ Tree的层数较少 B类树的一个很鲜明的特点就是数的层数比较少,而每层的节点非常多,树的每个叶子节点到根节点的距离都是相同的: 2. 减少磁盘IO: 树的每一个节点都是一个数据也,这样每 ...
- hdu2489-DFS+最小生成树
题意: 给你n个点,和任意两点的距离,让你在这N个点中找到一个有m个点并且ratio最小的树. ratio = sum(edge) / su ...
- SSM整合大体步骤
SSM整合步骤: 1. 导入jar spring: springMVC: mybatis: 第三方支持:log4j,pageHelper,AspectJ,jackson,jstl 2. 搭建sprin ...
- layui中的多图上传
效果展示: 1.html部分: 注:<input> 作为隐藏域,用于保存多图上传的资源数组,方便后期进行 form 表单的提交 <input type="hidden&qu ...