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 获取网页参数系统
Jul 19 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
js调试系列 源码定位与调试[基础篇]
Jun 18 Javascript
javascript实现全局匹配并替换的方法
Apr 27 Javascript
ajax如何实现页面局部跳转与结果返回
Aug 24 Javascript
多种jQuery绑定事件的实现方式
Jun 13 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
node.js操作mongodb简单示例分享
May 25 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
May 16 Javascript
JavaScript对象原型链原理解析
Jan 22 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中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
php通过各种函数判断0和空
2020/07/04 PHP
js null,undefined,字符串小结
2010/08/21 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
详解Python3中ceil()函数用法
2019/02/19 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
中层干部培训方案
2014/06/16 职场文书
统计员岗位职责范本
2015/04/14 职场文书
走近毛泽东观后感
2015/06/04 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
Hive日期格式转换方法总结
2022/06/25 数据库