锋利的JQuery-认识Jquery
今天开始学习菜鸟的JQuery,这本书在一前看过一遍了,但是由于虽然看了,但是将近一年在工作中基本上没有用上,很是悲催,菜鸟想,用一到两个星期时间把这本书看一遍吧。就像菜鸟前面的jsdom一样,菜鸟写博客不是为了让人家从中学到什么,菜鸟目前还没那样的水平,菜鸟只是想通过在写博客的途中能够留下菜鸟学习的痕迹,仅此而已,因此菜鸟决定不将随笔放入首页,以免浪费大家的时间,但是菜鸟并不会因此而比较随意,复制粘贴,菜鸟坚持自己敲每一行代码,就像jsdom那样。
废话不多说,Come on!
先来一个简单的Jquery代码
<html> <head> <script src="../jquery-1.3.1.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ alert("Hello World!"); }); </script> </head> <body> <body> </html>
这里面有关于jquery $(document).ready() 与window.onload的区别,博园里也有,我就不详细的写下来了。
- jQuery代码风格
链式风格
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>1-5-1</title> <style type="text/css"> #menu { width:300px; } .has_children{ background : #555; color :#fff; cursor:pointer; } .highlight{ color : #fff; background : green; } div{ padding:0; } div a{ background : #888; display : none; float:left; width:300px; } </style> </head> <body> <div > <div class="has_children"> <span>第1章-认识jQuery</span> <a>1.1-JavaScript和JavaScript库</a> <a>1.2-加入jQuery</a> <a>1.3-编写简单jQuery代码</a> <a>1.4-jQuery对象和DOM对象</a> <a>1.5-解决jQuery和其它库的冲突</a> <a>1.6-jQuery开发工具和插件</a> <a>1.7-小结</a> </div> <div class="has_children"> <span>第2章-jQuery选择器</span> <a>2.1-jQuery选择器是什么</a> <a>2.2-jQuery选择器的优势</a> <a>2.3-jQuery选择器</a> <a>2.4-应用jQuery改写示例</a> <a>2.5-选择器中的一些注意事项</a> <a>2.6-案例研究——类似淘宝网品牌列表的效果</a> <a>2.7-还有其它选择器么?</a> <a>2.8-小结</a> </div> <div class="has_children"> <span>第3章-jQuery中的DOM操作</span> <a>3.1-DOM操作的分类</a> <a>3.2-jQuery中的DOM操作</a> <a>3.3-案例研究——某网站超链接和图片提示效果</a> <a>3.4-小结</a> </div> </div> </body> </html>
然后我们看一下jQuery来实现这个导航栏效果。
$(".has_children").click(function(){ $(this).addClass("highlight").children("a").show().end().siblings(). removeClass("highlight").children("a").hide() });
这就是传说中的链式风格,我这个不知道和c#里面的扩展方法有什么相似之处。。这部分代码对于了解jQuery的人来说可能很简单,但是我想要是几十行或者上百行类似的代码,那看起来肯定和头痛,因此学会编写可读的代码比较重要:
$(".has_children").click(function(){ $(this).addClass("highlight")//将但钱元素添加hightlight类 .children("a").show().end()//将子节点的<a>元素显示出来并重新定位到上次操作的元素 .siblings().removeClass("highlight")//获取元素的兄弟节点,并去掉他们的highlight类 .children("a").hide()、、将兄弟元素下的<a>元素隐藏 });
要领总结:对于同一个对象不超过3个操作,可以直接写成一行,较多的建议每行写一个操作。对于多个对象的少量操作,可以每个对象写一行,如果涉及子元素,可以考虑适当地缩进。同时为代码添加相应的注释
DOM可以表示成一棵树,jQuery对象局势通过jQuer包装DOM对象后产生的对象
$("#foo").html()//jQuery //等同于 document.getElementById("foo").innerHTML;//dom
jQuery对象用无法使用DOM方法。
jQuery对象和DOM对象互相转换
jQuery对象和DOM对象互换jQuery对象前加$
var $variable=jQuery对象; var variabl=DOM对象;
jQuery对象转换成DOM对象。
1.[index],jQuery对象一个数组对象
var #cr=$("#cr");//jQuery对象 var cr=$cr[0];//DOM对象 alert(cr.checked)
get[index]
var #cr=$("#cr");//jQuery对象 var cr=$cr.get(0);//DOM对象 alert(cr.checked)
DOM对象转换正jQuery对象
var cr=document.getElementById("cr");//DOM对象 var #cr=$(cr);
实例,同意协议的
<html> <head> <script src="../jquery-1.3.1.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ var $cr=$("#cr");//我在这儿少了#找了半天 var cr=$cr[0]; $cr.click(function(){ if (cr.checked) { alert("感谢你的支持!你可以继续操作"); } }) }) </script> </head> <body> <input type="checkbox" id = "cr"/> <label for ="cr">我已经阅读了上面制度</label> </body> </html>
用jQuery实现
$(document).ready(function(){ var $cr=$("#cr"); $cr.click(function(){ if (¥cr.is(":checked"))//jQuery方法判断 { alert("感谢你的支持!你可以继续操作"); } }) })
好这章就记录到这儿。