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 相关文章推荐
做网页的一些技巧
Feb 01 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
js在IE与firefox的差异集锦
Nov 11 Javascript
JavaScript获取数组最小值和最大值的方法
Jun 09 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
Jun 24 Javascript
微信小程序 框架详解及实例应用
Sep 26 Javascript
原生js封装自定义滚动条
Mar 24 Javascript
js移动端图片压缩上传功能
Aug 18 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
node打造微信个人号机器人的方法示例
Apr 26 Javascript
细说Vue组件的服务器端渲染的过程
May 30 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 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 选项及相关信息函数库
2006/12/04 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
JavaScript中的私有成员
2006/09/18 Javascript
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
python基础教程之面向对象的一些概念
2014/08/29 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
bpython 功能强大的Python shell
2016/02/16 Python
python实现俄罗斯方块游戏
2020/03/25 Python
python生成密码字典的方法
2018/07/06 Python
简单了解django orm中介模型
2019/07/30 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
Python socket处理client连接过程解析
2020/03/18 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
工程力学硕士生的自我评价范文
2013/11/16 职场文书
专科毕业生自我鉴定
2013/12/01 职场文书
国家助学金受助感言
2015/08/01 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers