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 相关文章推荐
怎样在JavaScript里写一个swing把数据插入数据库
Dec 10 Javascript
JS小功能(列表页面隔行变色)简单实现
Nov 28 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
Feb 07 Javascript
js实现模拟计算器退格键删除文字效果的方法
May 07 Javascript
js结合正则实现国内手机号段校验
Jun 19 Javascript
jquery简单倒计时实现方法
Dec 18 Javascript
JS作用域链详解
Jun 26 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
Aug 17 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
微信小程序下拉框搜索功能的实现方法
Jul 31 Javascript
js+canvas实现转盘效果(两个版本)
Sep 13 Javascript
原生JavaScript实现随机点名表
Jan 14 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循环输出数据库内容的代码
2008/05/24 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
javascript定义函数的方法
2010/12/06 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
Django中URL的参数传递的实现
2019/08/04 Python
python批量处理文件或文件夹
2020/07/28 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
Python requests接口测试实现代码
2020/09/08 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
高中生自我鉴定范文
2013/10/30 职场文书
教师实习自我鉴定
2013/12/13 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
市场营销求职信范文
2014/02/21 职场文书
英文请假条
2014/04/11 职场文书
文明城市创建标语
2014/06/16 职场文书
年终晚会活动方案
2014/08/21 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python