jquery代码规范让代码越来越好看


Posted in Javascript onFebruary 03, 2017

最近学了jQuery,感觉这个jQuery是真的挺不错的,果然像他说的那样,少些多做!刚一入手感觉真是不错。但是写多了,就会发现这个代码一行居然能写那么长。而且可读性还不好。  有幸自己买了一本锋利的jQuery这本书。我就整理了下。到底在实际应用中怎么让自己的jQurey的代码看起来可读性强,而且还有美感。  我就用了了本书中的一个小例子。来教教大家代码应该怎么写菜好看!

废话不多说,想把这个demo代码奉上。各位爷!您瞧好啊~

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>菜单栏</title>
 <style>
 *{
  margin: 0;
  padding: 0;
 }
 .box{
  width: 400px;
  height: 280px;
  background-color: red;
  margin: 50px auto;
  border: 1px solid #000;
 }
 .box .menu{
  width: 100%;
  height: 100%;
  background-color: gold;
  list-style: none;
 }
 .box .menu>.level1{
  width: 100%;
  height: auto;
  line-height: 40px;
  list-style: none;
 }
 .box .menu>.level1>a.current{
  background-color: green;
  color: #0a0a0a;
  text-decoration: none;
 }
 .box .menu>.level1>a{
  display: inline-block;
  background-color: gray;
  width: 100%;
  text-align: center;
  text-decoration: none;
 }
 .box .menu>.level1>.level2{
  width: 100%;
  height: 160px;
  background-color: white;
  display: none;
  float: left;
 }
 .box .menu>.level1:nth-of-type(1)>.level2{
  display: block;
 }
 .box .menu>.level1>.level2 li{
  width: 100%;
  height: 40px;
  list-style: none;
  background-color: gainsboro;
  text-align: center;
 }
 </style>
 <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
 <script>
 $(function () {

  $(".level1>a").click(function () {
  $(this).addClass("current").next().show().parent().siblings().children("a").removeClass("current").next().hide();
  return false;
  });
 });
 </script>
</head>
<body>
<div class="box">
 <ul class="menu">
 <li class="level1">
  <a href="#one" class="current">衬衫</a>
  <ul class="level2">
  <li>短袖衬衫</li>
  <li>长袖衬衫</li>
  <li>短袖衬衫</li>
  <li>短袖衬衫</li>
  </ul>
 </li>
 <li class="level1">
  <a href="#one">卫衣</a>
  <ul class="level2">
  <li>开襟卫衣</li>
  <li>开襟卫衣</li>
  <li>开襟卫衣</li>
  <li>开襟卫衣</li>
  </ul>
 </li>
 <li class="level1">
  <a href="#one">裤子</a>
  <ul class="level2">
  <li>短袖衬衫</li>
  <li>裤子衬衫</li>
  <li>短袖衬衫</li>
  <li>裤子衬衫</li>
  </ul>
 </li>
 </ul>
</div>
</body>
</html>

童鞋们。请看这段代码

$(".level1>a").click(function () {
  $(this).addClass("current").next().show().parent().siblings().children("a").removeClass("current").next().hide();
  return false;
  });

请问你第一眼看着个你能一下子看明白是怎么回事吗?

哪怕是开发过几年的大神。也不能一眼就看出来这行代码要干啥。就是因为这行代码太长了。每读一次都要自讲前面的串联起来看。毫无美感,阅读性。

虽然jQuery做到了行为和内容的分离,但jQuery代码也应该拥有良好的层次结构机规范,这样才能进一步改善代码的可读性和可维护性。

所以代码应该写出这种样式

$(".level1>a").click(function () {
  $(this).addClass("current")
  .next().show()
  .parent().siblings().children("a").removeClass("current")
  .next().hide();
  return false;
  });

将每一次对象执行的动作分割成单独一行。这样可读性就大大提高了。

但也不要随意分割,随意分割那你还不如分割呢。所以总结了,以下三点

1.对于同一个对象不超过3个操作的,可以直接写成一行

  $(this).addClass("current").show();

2.对于同意对象的较多操作建议,每行写一个操作

$(this).addClass("current")
  .show()
  .fadeTo("mouseover")
  .fadeTo("fast",1)
  .unbind("click")
  .click(function(){
  //do something
  });

3.对于多个对象的少量操作,可以每一个对象写一行,如果涉及子元素,可以考虑适当的缩进,例如demo中的代码

$(this).addClass("current")
  .childer("li").show().end()
.siblings().removeClass()
  .children("a").hide();

还要强调一点,就是要为代码添加注释;

jQuery 以其强大的选择器著称,有时候很复杂的问题用一行选择器就可以轻松解决,但是很容易写出来下面的代码

$("#table>tbody>tr:has(td:has(:checkbox:enabled))").css("background","red"); 哈哈,你能一眼认出来我吗?

在编写一个优秀的选择器的时候,千万不要忘记给这一段代码加上注释,这很重要,无论是自己日后阅读还是与他人分享、合作开发,注释都能起到良好的效果

//注释:在一个id为table的表格的tbody中,如果每一行的一列中的checkbox没有被禁用,则把这行的背景设为红色
$("#table>tbody>tr:has(td:has(:checkbox:enabled))").css("background","red");

通过类似的有意义的注释,能够培养良好的编码习惯和风格,提高开发效率。

----------------------------------------------------------更新---------------------------------------------------------

(1)jQuery对象和DOM对象的相互转换

在jQuery对象和DOM对象相互转换之前,先约定好定义变量的风格,如果获取的对象是jQuery对象,那么在变量面前加上$

例如:

var $variable = jQuery对象

如果获取的DOM对象;

var varible = DOM对象;

以上是jQuery编写的规范。希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
[对联广告] JS脚本类
Aug 27 Javascript
iframe子父页面调用js函数示例
Nov 07 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
Jul 06 Javascript
原生js实现百叶窗效果及原理介绍
Apr 12 Javascript
微信小程序 数据访问实例详解
Oct 08 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
JS实现的五级联动菜单效果完整实例
Feb 23 Javascript
微信小程序实现列表下拉刷新上拉加载
Jul 29 Javascript
深入分析element ScrollBar滚动组件源码
Jan 22 Javascript
简单了解Ajax表单序列化的实现方法
Jun 14 Javascript
微信小程序Echarts覆盖正常组件问题解决
Jul 13 Javascript
vue+node 实现视频在线播放的实例代码
Oct 19 Javascript
Javascript for in的缺陷总结
Feb 03 #Javascript
canvas绘制七巧板
Feb 03 #Javascript
JS对象是否拥有某属性如何判断
Feb 03 #Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 #Javascript
JavaScript中捕获与冒泡详解及实例
Feb 03 #Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 #Javascript
几种tab切换详解
Feb 03 #Javascript
You might like
php模板中出现空行解决方法
2011/03/08 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
生成二维码方法汇总
2014/12/26 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
公司新员工的演讲稿注意事项
2014/01/01 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
家具促销活动方案
2014/02/16 职场文书
请假条怎么写
2014/04/10 职场文书
端午节演讲稿
2014/05/23 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
js Proxy的原理详解
2021/05/25 Javascript