JQuery
一、概念
JQuery是一个优秀的JavaScript代码库(框架),用于简化JavaScript和HTML的操作(简化文档操作),宗旨是“Write less, Do more”。
JQuery或者其他的一些JavaScript框架的本质,就是一些JavaScript文件,在文件里面封装了一些原生的JavaScript代码,简化操作。
二、使用步骤
- 下载jQuery
- 导入jQuery的js文件
- 使用
三、js对象与jQuery对象的转换
由于js对象与jQuery对象是不同的,两者之间的方法并不是通用的,有时候为了使用js对象或者jQuery对象的方法,要对两者进行转换。
-
jQuery对象------>js对象:jQuery对象[索引]或者jQuery.get(索引)
-
js对象------>jQuery对象:$(js对象)
<script> var divs = document.getElementsByTagName("div"); var $divs = $("div");//jQuery的方法获得所有名为div的元素 alert(divs.length);// 当做数组使用 alert($divs.length);// 当做数组使用 for (var i = 0; i < divs.length; i++) { divs[i].innerHTML = "aabbcc"; } $divs.html("112233");// 设置所有的元素的标签体的内容 $(divs).html("fffggg");/*js对象------>jQuery对象:$(js对象)*/ // jQuery对象------>js对象:jQuery对象[索引]或者jQuery.get(索引) $divs.get(0).innerHTML = "hhjjj"; $divs[1].innerHTML = "hhjjj"; </script>
四、jQuery的选择器
选择器是为了筛选具有相似特征的元素(标签)
前置知识:
-
事件绑定:click()、submit()、blur()、mouseout()、mouseover()等
$("#b1").click(function () { alert("hahah"); });
-
入口函数:相当于window.onload
与window.onload不同的是:window.onload()在一个页面中只能定义一次,因为window.onload只能赋值为一个function对象,但是
$(function(){ });
可以定义多次$(function () { // 窗口加载之后执行的代码 });
-
样式控制:css方法
$("#div1").css("backgroundColor", "pink");
1. 基本选择器
- 元素选择器
- $("html的标签名"):获得所有与标签名想匹配的元素
- id选择器
- $("#id属性值"):获得与指定id属性值相匹配的元素
- 类选择器
- $(".class属性值"):获得与指定class属性值相匹配的元素
- 并集选择器
- $("选择器1,选择器2……"):获取所有这些选择器
2. 层级选择器
- 后代选择器
- $("A B"):获取A元素内所有的B元素(包括孙子元素)
- 字选择器
- $("A > B"):获取A元素内的所有B子元素(只获取儿子元素)
3. 属性选择器
-
属性名称选择器
- $("A[属性名]"):获取包含指定属性名的A元素
-
属性选择器
-
$("A[属性名='属性值']"):获取包含特定属性名、属性值的A元素
$("div[title='div1']") // 获取属性title值为div1的元素 $("div[title^='div1']") // 获取属性title值以div1开始的元素 $("div[title$='div1']") // 获取属性title值以div1结束的元素 $("div[title*='div1']") // 获取属性title值包含div1的元素
-
-
复合属性选择器
$("A [ 属性名1='属性值1 '][ 属性名2='属性值2 ']....")
:获取匹配多个属性名、属性值的元素
4.过滤选择器
-
首元素选择器
-
:first
获得选择的元素的第一个选择器$("div:first")// 获取第一个div
-
-
尾元素选择器
-
:last
获得选中的元素的最后一个选择器$("div:last")// 获取最后一个div
-
-
非元素选择器
-
:not(selector)
不包括指定元素的选择器$("div:not(.one))// 获得class不为one的div选择器
-
-
偶数选择器
-
:even
获得选中的元素的偶数元素,从0开始$("div:even")// 获得选中的元素的偶数元素div
-
-
奇数选择器
-
:odd
获得选中的元素的奇数元素,从0开始$("div:odd")// 获得选中的元素的奇数元素div
-
-
等于索引选择器
-
:eq(index)
获得索引等于index的选择器$("div:eq(3)")// 获得索引等于3的div元素
-
-
大于索引选择器
-
:gt(index)
获得索引大于index的选择器$("div:gt(3)")// 获得索引大于3的div元素
-
-
小于索引选择器
-
:lt(index)
获得索引小于index的选择器$("div:lt(3)")// 获得索引小于3的div元素
-
-
标题选择器
-
:header
获得标题(h1-h6)元素$(:header)// 获得所有的标题元素
-
5.表单过滤选择器
- 可用元素选择器
:enabled
获得可用元素
- 不可用元素选择器
:disabled
获得不可用元素
- 选中选择器
:checked
获得单选、复原框选中的元素
- 选中选择器
selected
获得下拉选框选中的的元素
五、DOM操作
1. 内容操作
- html():获取、设置标签体内容
- text() :获取、设置标签体内纯文本内容
- val():获取、设置元素的val值
2. 属性操作
-
通用属性操作
-
attr():获取、设置元素的属性值
-
removeAttr():删除属性
-
prop():获取、设置元素的属性值
-
removeProp():删除属性
var name = $("#bj").attr("name"); // 获取name属性的属性值 $("#bj").attr("name", "北京");// 设置name属性的属性值 var prop = $("#hobby").prop("checked");// 获取属性值,checked是固有属性
注意:attr与prop的区别,当操作的是元素的固有属性,用prop,操作元素的自定义属性,用attr
-
-
对class属性的操作
- addClass():添加class属性值
- removeClass():移除class属性值
- toggleClass():切换class属性,toggle("didi"),如果元素对象有class=“didi”,就删除class属性,如果没有就添加该class属性
3.CRUD(增删改查)操作
- append():父元素将子元素追加到末尾
- 对象1.append(对象2):将对象2追加到对象1的内部,并且是添加到末尾
- prepend():父元素将子元素追加到开头
- 对象1.prepend(对象2):将对象2追加到对象1的内部,并且是添加到开头
- appendTo():
- 对象1.appendTo(对象2):将对象1追加到对象2的内部,并且是添加到末尾
- prependTo():
- 对象1.prependTo(对象2):将对象1追加到对象2的内部,并且是添加到开头
- after():添加元素到到元素后面
- 对象1.after(对象2):将对象2添加到对象1后面,他们是兄弟关系
- before():添加元素到元素前面
- 对象1.before(对象2):将对象2添加到对象1前面,他们是兄弟关系
- insertAfter():
- 对象1.insertAfter(对象2):将对象1添加到对象2后面,他们是兄弟关系
- insertBefore():
- 对象1.insertBefore(对象2):将对象1添加到对象2前面,他们是兄弟关系
- remove():移除元素
- 对象.remove():移除对象
- empty():清空后代元素
- 对象.empty():清空对象的所有后代元素,但是保留当前对象,当前对象的属性节点
六、jQuery动画
jQuery三种方式显示和隐藏元素
1. 默认方式显示和隐藏元素
-
show([speed, [easing], [fn]])
- 参数:
- speed:动画的速度,有三个预定义的值(“slow”,“normal”, “fast”),还可以传递毫秒值
- easing:动画切换的效果,默认是swing,还有一个值是linear
- swing:慢----快-----慢
- linear:匀速
- fn:动画结束后执行的function对象
- 参数:
-
hide([speed, [easing], [fn]])
-
toggle([speed], [easing], [fn])
function hideFn() { $("#showDiv").hide("slow", "swing", function () { alert("隐藏了"); }); $("#showDiv").hide("slow", "swing"); $("#showDiv").slideDown("slow"); $("#showDiv").fadeOut("slow"); }
2. 滑动方式显示和隐藏元素
- slideDown([speed], [easing], [fn])
- slideUp([speed, [easing], [fn]])
- slideToggle([speed], [easing], [fn])
3. 淡入淡出方式显示和隐藏元素
- fadeIn([speed], [easing], [fn])
- fadeOut([speed], [easing], [fn])
- fadeToggle([speed, [easing], [fn]])
七、遍历
1. js的遍历方式:for、while、do while
$(function () {
var citys = $("#city > li");
for (var i = 0; i < citys.length; i++) {
alert(i + " : " + citys[i].innerHTML);
}
});
2. jQuery的三种遍历方式
-
jQuery对象.each(callback);
-
callback是回调函数,可以在函数体return true,相当于一般循环的continue,return false相当于break
-
callback的实体就是callback(index,element):index是遍历的索引,element是遍历集合获得的对象
$("#city > li").each(function (index, element) { if ($(element).html() == "天津") { return true; } alert(index + " : " + $(element).html()); });
-
$.each(jQuery对象, [callback]):用法和上一个类似,回调函数是一样的,又称全局遍历
$.each($("#city > li"), function () { alert($(this).text()); });
-
-
for.....of:jQuery3.0之后的版本提供的遍历方式
八、jQuery事件绑定方式
1. jQuery标准的事件绑定
jQuery对象.事件方式(回调函数):回调函数里编写发生事件后执行的逻辑
// 单击事件
$("#name").click(function () {
alert("我被点击了");
});
// 鼠标来了
$("#name").mouseover(function () {
alert("鼠标来了");
});
// 鼠标走了
$("#name").mouseout(function () {
alert("鼠标走了");
});
2. on、off绑定解绑事件
-
jQuery对象.on("事件名称", 回调函数)
-
jQuery对象.off("事件名称")
$(function () { $("#btn").on("click", function () { // 单击事件的执行逻辑 alert("click..."); }); // 当btn2被单击了,就解除btn的单击事件 $("#btn2").click(function () { $("#btn").off("click"); // off不传参数,解除btn上绑定的所有事件 $("#btn").off(); }); });
3. 事件切换:toggle
jQuery对象.toggle(fn1, fn2...):fn1、fn2、...切换执行
注意:jQuery1.9版本之后就删除了该方法,但是要使用可以加入插件jQuery Migrate恢复
$(function () {
$("#btn").toggle(function () {
$("#myDiv").css("backgroundColor", "pink");
}, function () {
$("#myDiv").css("backgroundColor", "blue");
});
});
九、插件
-
$.fn.extend(object):增强通过jQuery获取的对象的功能,定义之后jQuery获取的对象可以调动里面的方法,获得的对象如:$("#id")、$(".class属性值")等
$.fn.extend({ // 定义一个check防方法,该方法是所有jQuery对象都可以调用的 check:function () { this.prop("checked", true); }, uncheck:function () { this.prop("checked", false); } }); $(function () { $("#btn-check").click(function () { // 获得的jQuery对象调用check方法 $("input[type='checkbox']").check(); }); $("#btn-uncheck").click(function () { $("input[type='checkbox']").uncheck(); }); });
-
$.extend(object):增强jQuery自身的功能,jQuery自身就是$、jQuery,定义之后$可以直接调用里面的方法
$.extend({ max:function (a, b) { return a > b ? a : b; }, min:function (a, b) { return a < b ? a : b; } }); alert($.max(3, 4)); alert($.min(3, 4));