《锋利的jQuery(第2版)》随记-长期更新
2016-06-17 17:34
387 查看
Created by Yiyi_coding
Last edited at 2016年6月17日
第一章 认识jQuery
jQuery代码的编写
jQuery代码风格
DOM对象和jQuery对象
DOM对象和jQuery对象区别
DOM对象和jQuery对象的互相转换
解决jQuery和其它库的冲突
jQuery库在其它库之后导入
jQuery库在其它库之前导入
第二章 jQuery选择器
常用的css选择器
jQuery选择器
更多sibling()语法请参考 这儿.
jQuery对象:通过jQuery包装DOM对象后产生的对象。
*注:利用#id得到的jQuery对象与getElementById得到的DOM对象并不等价,如下图
(1)如上图,jQuery对象是一个类似于数组的对象,可以通过[index]
的方法得到DOM对象
(2)另一种是jQuery本身提供的,通过get(index)方法得到相应的DOM对象
二:DOM对象转换为jQuery对象
②:如果想确保jQuery不会与其他库冲突,又想自定义个其他快捷方式,可进行如下操作:
③:如果不想给jQuery自定义上述备用名称,还想使用
jQuery选择器不仅比传统的JavaScript中取得元素的方法写法简洁,还能避免由于使用了页面中不存在的元素而导致的错误(getElementById() 方法:通过id取得HTML元素。getElementsByName()方法:通过name取得元素,是一个数组。getElementsByTagName()方法:通过HTML标签取得元素,是一个数组。)
通过JS选择器查找页面不存在的元素时会报错,而jQuery选择器则不会。
*1.可以使用next()方法代替$(“prev+next”)选择器:
*2.可以使用nextAll()方法代替$(“prev~next”)选择器:
*3.区别nextAll()和siblings()方法:
nextAll()取到的是该元素之后的所有同辈元素,有位置区分。
siblings()取到的的是所有的同辈元素,没有位置前后区分。
Last edited at 2016年6月17日
第一章 认识jQuery
jQuery代码的编写
jQuery代码风格
DOM对象和jQuery对象
DOM对象和jQuery对象区别
DOM对象和jQuery对象的互相转换
解决jQuery和其它库的冲突
jQuery库在其它库之后导入
jQuery库在其它库之前导入
第二章 jQuery选择器
常用的css选择器
jQuery选择器
第一章 认识jQuery
jQuery代码的编写
jQuery代码风格
jQuery**链式操作**实现导航栏效果:$(".level > a").click(function(){ $(this).addClass("current").next().show()//当前元素添加class,并将紧邻其后的元素显示出来 .parent().sibling()//筛选父辈元素的同辈元素 .children("a").removeClass("current").next().hide(); });
更多sibling()语法请参考 这儿.
DOM对象和jQuery对象
DOM对象和jQuery对象区别
DOM对象:通过JavaScript中的getElementsByTagName或者getElementById获取的元素节点就是DOM对象。DOM对象可以使用JS中的方法和属性例如:var domOBJ = document.getElementById("id-1");//获得DOM对象 var domHTML = domOBJ.innerHTML;//使用JS中的属性
jQuery对象:通过jQuery包装DOM对象后产生的对象。
$("#id-1").html();//等价于document.getElementById("id-1").innerHTML
*注:利用#id得到的jQuery对象与getElementById得到的DOM对象并不等价,如下图
DOM对象和jQuery对象的互相转换
一 :jQuery提供了两种方法将一个jQuery对象转换为DOM对象,即[index]和get(index)。(1)如上图,jQuery对象是一个类似于数组的对象,可以通过[index]
的方法得到DOM对象
$("#id-1")[0] 等价于 document.getElementById("id-1");
(2)另一种是jQuery本身提供的,通过get(index)方法得到相应的DOM对象
document.getElementById("id-1") 等价于 $("#id-1").get(0);
二:DOM对象转换为jQuery对象
$("#id-1") 等价于 $(document.getElementById("id-1"));
解决jQuery和其它库的冲突
jQuery库在其它库之后导入
①:在jQuery库和其他库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数将变量$的控制权移交给其他JavaScript库。如下:<!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>冲突解决①</title> <!-- 引入 prototype --> <script src="lib/prototype.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="../../scripts/jquery.js" type="text/javascript"></script> </head> <body> <p id="pp">Test-prototype(将被隐藏)</p> <p >Test-jQuery(将被绑定单击事件)</p> <script type="text/javascript"> jQuery.noConflict(); //将变量$的控制权让渡给prototype.js jQuery(function(){ //使用jQuery jQuery("p").click(function(){ alert( jQuery(this).text() ); }); }); $("pp").style.display = 'none'; //使用prototype.js隐藏元素 </script> </body> </html>
②:如果想确保jQuery不会与其他库冲突,又想自定义个其他快捷方式,可进行如下操作:
<script type="text/javascript"> var $j = jQuery.noConflict(); //自定义一个比较短快捷方式 $j(function(){ //使用jQuery $j("p").click(function(){ alert( $j(this).text() ); }); }); $("pp").style.display = 'none'; //使用prototype.js隐藏元素 </script>
③:如果不想给jQuery自定义上述备用名称,还想使用
$而不管其他库中的$()方法,同时又不想与其他库产生冲突,可以尝试下述两种方法:
<script type="text/javascript"> jQuery.noConflict(); //将变量$的控制权让渡给prototype.js jQuery(function($){ //使用jQuery $("p").click(function(){ //继续使用 $ 方法 alert( $(this).text() ); }); }); $("pp").style.display = 'none'; //使用prototype </script>
<script type="text/javascript"> jQuery.noConflict(); //将变量$的控制权让渡给prototype.js (function($){ //定义匿名函数并设置形参为$ $(function(){ //匿名函数内部的$均为jQuery $("p").click(function(){ //继续使用 $ 方法 alert($(this).text()); }); }); })(jQuery); //执行匿名函数且传递实参jQuery $("pp").style.display = 'none'; //使用prototype </script>
jQuery库在其它库之前导入
如果jQuery库在其他库之前就导入了,那么可以直接使用”jQuery”来做jQuery的一些工作,同时,可以将$()方法作为其他库的快捷方式。这里无需调用jQuery.noConflict()函数。如下:<!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>冲突解决</title> <!-- 引入 jQuery --> <script src="../../scripts/jquery.js" type="text/javascript"></script> <!-- 引入 prototype --> <script src="lib/prototype.js" type="text/javascript"></script> </head> <body> <p id="pp">Test-prototype(将被隐藏)</p> <p >Test-jQuery(将被绑定单击事件)</p> <script type="text/javascript"> jQuery(function(){ //直接使用 jQuery ,没有必要调用"jQuery.noConflict()"函数。 jQuery("p").click(function(){ alert( jQuery(this).text() ); }); }); $("pp").style.display = 'none'; //使用prototype </script> </body> </html>
第二章 jQuery选择器
常用的css选择器
选择器 | 语法 | 描述 | 示例 |
---|---|---|---|
标签选择器 | E{css规则} | 文档元素作为选择符 | a{text-decoration:none} |
ID选择器 | ID{css规则} | 文档元素的唯一标示符ID做为选择符 | note{font-size:14px} |
类选择器 | E.class{css规则}或者直接.class{css规则} | 文档元素的class做为选择符 | div.note{font-size:16px} .dream{font-size:18px} |
群组选择器 | E1,E2,E3{css规则} | 多个选择符应用同样的样式 | p,a,span{font-size:14px} |
后代选择器 | E F{css规则} | 元素E的任意后代元素F | div a{color:red} |
通配符选择器 | *{css规则} | 文档的所有元素应用同样的样式 | *{color:red} |
jQuery选择器
jQuery选择器完全继承了css的风格。两者写法非常相似,只不过作用效果不同,css选择器找到元素后添加样式,jQuery选择器则常用于添加行为。jQuery选择器不仅比传统的JavaScript中取得元素的方法写法简洁,还能避免由于使用了页面中不存在的元素而导致的错误(getElementById() 方法:通过id取得HTML元素。getElementsByName()方法:通过name取得元素,是一个数组。getElementsByTagName()方法:通过HTML标签取得元素,是一个数组。)
通过JS选择器查找页面不存在的元素时会报错,而jQuery选择器则不会。
选择器 | 描述 | 示例 |
---|---|---|
#id | 根据id选择唯一元素 | $(“#test”) 选取id为test的元素 |
#class | 根据类名匹配元素 | $(“.test”) 选取所有class为test的元素 |
element | 根据元素类型匹配 | $(“p”) 选取所有< p >标签元素 |
* | 匹配所有元素 | $(“*”) 选取页面所有的元素 |
selector1,2,3… | 每个选择器匹配到的元素集合 | $(“#test , div , p.myclass”) 匹配id为test,所有的div以及class为myclass的p元素的集合 |
jQuery(“parent child”) | 选取parent元素里所有的child元素 | $(“div span”) 选取< div >里所有的< span >元素 (不同级的多个) |
jQuery(“parent > child”) | 选取parent元素下紧接着的child元素 | $(“#test > span”) 选取位于id为test的元素下的紧接的< span >子元素(同级的多个) |
jQuery(“prev+next”) | 选取紧接在prev元素后的next元素 | $(“.one+div”) 选取class为one的下一个同辈< div >元素 (同辈一个) |
jQuery(“prev~siblings”) | 选取prev元素之后所有的siblings元素 | $(“#test~span”) 选取id为test之后的所有的< span >同辈元素(同辈多个) |
*1.可以使用next()方法代替$(“prev+next”)选择器:
$(".one+div")等价于$(".one").next("div")
*2.可以使用nextAll()方法代替$(“prev~next”)选择器:
$(".one~div")等价于$(".one").nextAll("div")
*3.区别nextAll()和siblings()方法:
nextAll()取到的是该元素之后的所有同辈元素,有位置区分。
siblings()取到的的是所有的同辈元素,没有位置前后区分。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- JavaScript演示排序算法
- 2015-2016网页设计趋势分析 Web Design of Trends
- jQuery Ajax 跨域调用
- 移动端的长按事件
- jquery教程靠边站,一分钱不花让你免费学会jquery
- JQuery+Strusts1.x无刷新登录
- $.ajax()方法详解
- jQuery ajax - ajax() 方法
- JavaScript 各种遍历方式详解
- 数组方法汇总
- jQuery Html控件基本操作(日常收集整理)
- jQuery插件实现文字无缝向上滚动效果代码
- jQuery菜单插件用法实例
- JQuery 初体验(建议学习jquery)
- 基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
- Jquery实现的table最后一行添加样式的代码
- jQuery实现向下滑出的平滑下拉菜单效果
- jQuery 练习[一] 学习jquery的准备工作
- jquery获得页面元素的坐标值实现思路及代码