jQuery
一、简介
1、什么是jQuery
JavaScript的框架,是一套工具库。简化了JavaScript的功能实现。可以使得开发者写更少的代码,却做更多的事-write less do more。
可以兼容不同的浏览器
JQuery是一个工具库,是对JS的代码进行了一次封装
JS代码和JQuery代码对比:
1 2 3 4 5 6
| JS: 通过js来获取页面上的一个div: document.getElementById("d1") JQuery: 通过JQ来获取页面上的一个div: $("#d1")
|
2、jQuery功能
jQuery库包含以下功能:
- HTML 元素选取
- HTML 元素操作
- CSS 操作
- HTML 事件函数
- JavaScript 特效和动画
- HTML DOM 遍历和修改
3、安装
有两个版本的 jQuery 可供下载:
- Production version - 用于实际的网站中,已被精简和压缩。 jquery-1.8.3.js
- Development version - 用于测试和开发(未压缩,是可读的代码) jquery-1.8.3.min.js
1 2 3
| <head> <script src="jquery-1.10.2.min.js"></script> </head>
|
4、初识jQuery
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <head> <title>初识jQuery</title> <meta charset="utf-8"> <script src="jquery-1.8.3.min.js"></script> <script type="text/javascript"> function myclick() { $("#pid").hide() } </script> </head>
<body> <p id="pid">做一个决定,并不难,难的是付诸行动,并且坚持到底。</p> <input type="button" name="" value="点击" onclick="myclick()"> </body>
|
二、jQuery选择器
jQuery 选择器允许对 HTML 元素组或单个元素进行操作。
jQuery 选择器基于元素的 id、类、类型、属性、属性值等”查找”(或选择)HTML 元素。
jQuery 中所有选择器都以美元符号开头:$()。
1、基本选择器
1.1 元素选择器
1.2 #id选择器
1.3 .class选择器
1.4 *全选择器
1.5 多选择器共用
1 2 3 4 5 6
| var p = $("p.pc")
var p = $("p#pid")
var p = $("div,p")
|
1.6 jQuery对象与DOM对象区别
DOM获取元素:
1
| document.getElement...(xxx)
|
jQuery获取元素:
都是对一个或多个标签的封装,都指向一个或多个标签,只是支持的功能不一样,DOM对象和Jquery对象都有各自的方法
jQuery对象与DOM对象相互转换
DOM –> jQuery
1 2 3
| var div = document.getElementById("div_1");
var div_jq = $(div)
|
jQuery –> DOM
1 2 3 4 5
| var div = $(div)
var div = div.get(0)
var div = div[0]
|
2、层级选择器
最好select1使用id选择
2.1 后代选择器 派生选择器
$(“selector1 selector2”) 中间有空格
1 2
| $("div .a"); $("div .a input");
|
2.2 儿子选择器
$(“selector1 > selector2”); 中间为大于号
1 2 3
| $("span > input");
$("div span>input");
|
2.3 毗邻
$(“selector1+selector2”) 中间为加号
1 2 3
| $("div+p") ;
$("div+p+input")
|
2.4 弟弟
$(“selector1~selector2”) 中间为破折号
3、基本过滤选择器
1 2 3 4 5 6 7 8 9 10
| var p = $("div>b>p:first") p.hide()
<div> <b > <p id="pid" class="a">1.做一个决定,并不难,难的是付诸行动,并且坚持到底。</p> <p id="pid2">2.做一个决定,并不难,难的是付诸行动,并且坚持到底。</p> </b> </div>
|
- :eq(index) 选出对应index索引值的标签 index从0开始
- :gt(index) 选出索引大于index的元素
- :lt(index) 选出索引小于index的元素
:even 选出索引值为偶数的元素
- :not(selector) 选出selector不能匹配到的元素
1 2 3
| $("div>input:not(.a)"); $("#abc>li:not(#a)"); $("#abc>li:not(:eq(2))");
|
4、内容过滤选择器 (了解)
- :contains 模糊匹配 (自己含有,或后代含有)
1
| $("div:contains('2')") div或div下内容包括2的标签
|
5、属性过滤选择器
$("[name]")
有name属性的
$("[name='zhj']")
name属性值为zhj的
$("[value='male']")
value属性值为male的
$("[type='text']")
type属性值为text的
6、可见性过滤选择器
:visible
可见元素
:hidden
隐藏元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <script type="text/javascript"> function myclick() { $("div p:empty").hide(); console.log($("div p:visible")); } </script>
<div> <p id="pid" class="a">1.做一个决定,并不难,难的是付诸行动,并且坚持到底。</p> <p id="pid2">2.做一个决定,并不难,难的是付诸行动,并且坚持到底。</p> <p></p> </div>
<input type="button" name="" value="点击" onclick="myclick()">
|
jQuery对象遍历
1 2 3 4 5 6 7 8 9
| var plist = $(":input"); for(var i = 0; i<plist.size();i++) { var pd = plist.get(i); var pq = plist.eq(i); console.log($(pd).val()); console.log(pq.val()); }
|
或者
1 2 3 4
| var ps = $("div p"); ps.each(function(i){ console.log(this) });
|
三、jQuery事件
1、事件注册的方式
- 基于标签:和之前JS中使用方式一致,Jquery未加干涉
- 基于编程:Jquery提供了全新的API
1 2 3 4 5 6
| $(document).ready(function(){ $("#btn_1").click(function(event){ console.log($(this).val()); console.log(this.value); }) })
|
Ready事件
等价于onload的作用,用于保证代码的执行在页面加载之后
1 2
| $(document).ready(function(){...}); $(function(){...})
|
2、jQuery事件函数
鼠标事件 |
键盘事件 |
表单事件 |
click() |
keypress() |
change() |
dblclick() |
keydown() |
focus() |
mouseover() |
keyup() |
blur() |
mousemove() |
|
|
mouseout() |
|
|
|
|
|
|
|
|
四、jQuery DOM
jQuery 中非常重要的部分,就是操作 DOM 的能力。
jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易。
1、获取内容
- text() - 设置或返回所选元素的文本内容
- html() - 设置或返回所选元素的内容(包括 HTML 标记)
- val() - 设置或返回表单字段的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <script > $(function(){ $("#btn").click(function(){ var pe = $("div"); var text = pe.text(); console.log(text);
var html = pe.html(); console.log(html);
console.log($(this).val()); $(this).val("不要点我"); }) })
</script>
<div>abc <p id="pid" class="a"> 1.做一个决定,并不难,难的是付诸行动,并且坚持到底。 </p> </div>
<input type="button" value="点我" id="btn">
|
2、获取属性
jQuery attr() 方法用于获取属性值。
attr("属性名")
获取属性名
attr("属性名","属性值")
设置属性值
attr({属性名1:属性值, 属性名2:属性值,...})
一次设置多个属性值
removeAttr("属性名")
删除标签的属性
prop
和attr使用一致,作用一致;但prop在获取bool类型属性时(checked,selected)更友好
1 2 3 4 5 6 7 8 9 10 11 12
| $(function(){ $(":input").click(function(){ var attr = $("a").attr("href"); console.log(attr);
$("a").attr("href","http://www.baidu.com"); })
})
<a href="http://www.baizhiedu.com" style="text-decoration: none" target="_blank">百知教育</a> <input type="button" value="点我">
|
3、添加元素
创建标签
- append() - 在被选元素最后一个位置插入内容
- prepend() - 在被选元素的开头插入内容
- after() - 在被选元素之后插入内容
- before() - 在被选元素之前插入内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <script > $(function(){ $("#btn").click(function(){ $("#div_1").append("<p>通过 jQuery,可以很容易地添加新元素/内容。</p>") }) })
$('#d1').prepend('<p>沙河</p>') </script>
<div id="div_1"> abc </div> <input type="button" value="添加" id="btn">
|
4、删除元素
- remove() - 删除被选元素(及其子元素)
- empty() - 清空元素内容
5、jQuery CSS类
- addClass() - 向被选元素添加一个或多个类
- removeClass() - 从被选元素删除一个或多个类
通过添加class实现 当点击button时将div的文本颜色改为blue,字体改为120px。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <!--样式表--> <style type="text/css"> .blue{ color: blue; font-size: 120px; } </style>
<!--jquery代码--> <script> $(function(){ $("#btn").click(function(){ $("#div_1").addClass("blue") }) }) </script>
<!--HTML--> <div id="div_1"> 这是一个文本 </div> <input type="button" value="添加" id="btn">
|
6、css( )方法
css() 方法设置或返回被选元素的一个或多个样式属性。
css("样式属性名")
获取样式属性值
css("样式属性名","样式属性值")
设置样式属性值
css({"样式属性名1":"样式属性值","样式属性名2":"样式属性值",..})
设置多个样式属性值
1 2 3
| $("#div_1").css("color","blue"); console.log($("#div_1").css("color")); $("#div_1").css({"background-color":"blue","color":"white","font-size":"50px"});
|
补充(了解):
使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。
1 2 3 4
| $('#u1').on('click','li',function () { console.log(this) })
|
1
| <script src="https://code.jquery.com/color/jquery.color-2.2.0.min.js" integrity="sha256-aSe2ZC5QeunlL/w/7PsVKmV+fa0eDbmybn/ptsKHR6I=" crossorigin="anonymous"></script>
|
动画(了解):
1 2 3 4 5
| 获取上一个兄弟 prev() 获取下一个兄弟 next() 获取父标签 parent() 获取子标签 children() .eq(index)选择索引为index的jquery对象
|