JQuery概念
- jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
- JavaScript框架:本质上就是一些js文件,这些文件中封装了js的原生代码。
快速入门
- 下载JQuery
- 版本说明:
- 1.x:兼容ie678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 (2016年5月20日)
- 2.x:不兼容ie678,很少有人使用,官方只做BUG维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,最终版本:2.2.4 (2016年5月20日)
- 3.x:不兼容ie678,只支持最新的浏览器。除非特殊要求,一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。目前该版本是官方主要更新维护的版本。最新版本:3.3.1(2018年1月20日)
- 版本说明:
- 导入JQuery的js文件:导入.min.js文件。
- 使用
JQuery对象和JS对象的区别与转换
- JQuery获取元素对象:
var $divs = $("div");
; - JS获取元素对象:
var div2 = document.getElementsByTagName("div");
- JQuery对象在操作时更加方便,但是JQuery对象和JS对象的方法是不通用的。
- JQuery对象和JS对象的互相转换:
- JS–>JQ:
$(JS对象)
,如:$(divs).html("修改html内容")
- JQ–>JS:
jq对象[索引]
或者jq对象.get(索引)
,如:$divs[1].innerHTML("修改HTML内容")
或者$divs.get(0).innerHTML("修改HTML内容")
- JS–>JQ:
基本语法
- 事件绑定:
- 示例:获取b1按钮,绑定单击事件。
$("#b1").click(function(){
alert("click");
})
- 入口函数:dom文档加载完成后执行该函数中的代码
- js写法:
windows.onload = function(){
alert("js");
}
- jq写法:
$(function(){
alert("jq");
})
- windows.onload与$(function(){})的区别:
- windows.onload 只能定义一次,如果定义多次,后边的会将前面的覆盖掉。
- $(function(){})可以定义多次。
- 样式控制:css方法
- 用css原本的样式名称:
$("#div1").css("background-color","red");
- 用dom的对象名称:
$("#div1").css("backgroundColor","pink");
- 用css原本的样式名称:
选择器
基本选择器
- 标签选择器:(元素选择器)
- 语法:
$("html标签名")
,获得所有匹配标签名的元素;
- 语法:
- id选择器:
- 语法:
$("#id的属性值")
,获得与指定id属性值匹配的元素;
- 语法:
- 类选择器:
- 语法:
$(".class的属性值")
,获得与指定的class属性值匹配的元素;
- 语法:
- 并集选择器:
- 语法:
$("选择器1,选择器2")
,获取多个选择器选中的所有元素。
- 语法:
层级选择器
- 后代选择器:
- 语法:
$("选择器1 选择器2)
,选择选择器1选择的元素中满足选择器2的所有元素。(多层嵌套的也选择)
- 语法:
- 子选择器:
- 语法:
$("选择器1 > 选择器2)
,选择选择器1选择的元素中满足选择器2的所有子元素。(多层嵌套的不选择)
- 语法:
属性选择器
- 属性名称选择器:
- 语法:
$("标签名[属性名]")
,该标签下包含指定的属性的元素;
- 语法:
- 属性选择器:
- 语法:
$("标签名[属性名 = '值']")
,该标签下包含指定属性且该属性等于指定值的元素。 - 语法:
$("标签名[属性名 != '值']")
,该标签下不包含指定属性获知该属性不等于指定值的元素。 - 语法:
$("标签名[属性名 ^= '值']")
,该标签下包含指定属性且该属性值以指定值开始的元素。 - 语法:
$("标签名[属性名 $= '值']")
,该标签下包含指定属性且该属性值以指定值结尾的元素。 - 语法:
$("标签名[属性名 *= '值']")
,该标签下包含指定属性且该属性值中包含指定的值的元素。
- 语法:
- 复合属性选择器:
- 语法:
$("标签名[属性名 = '值'][][]...")
,该标签下,同时满足多个属性限定条件的元素。
- 语法:
过滤选择器
- 首元素选择器:
- 语法:
:first
,获得选择的元素中的第一个元素,如$(div:first)
。
- 语法:
- 尾元素选择器;
- 语法:
:last
,获得选择的元素中的最后一个元素。
- 语法:
- 非元素选择器:
- 语法:
:not(selector)
,获得选择的与元素中,不包括指定内容的元素。如:$(div:not(.one))
,选择div中class不为one的元素。
- 语法:
- 偶数选择器:
- 语法:
:even
,获得选择的元素中第偶数个的元素,从0开始计数。如;$(div:even)
。
- 语法:
- 奇数选择器:
- 语法:
:odd
,获得选择的元素中第奇数个的元素,从0开始计数。
- 语法:
- 等于索引选择器:
- 语法:
:eq(index)
,获得选择的元素中第某位的元素。
- 语法:
- 大于索引选择器:
- 语法:
:gt(index)
,获得选择的元素中索引大于指定索引的元素。
- 语法:
- 小于索引选择器:
- 语法:
:lt(index)
,获得选择的元素中索引小于指定索引的元素。
- 语法:
- 标题选择器:
- 语法:
:header
,获得标题元素,没有参数,固定的写法。
- 语法:
表单过滤选择器
- 可用元素选择器:
- 语法:
:enabled
,获得可用元素;
- 语法:
- 不可用元素选择器:
- 语法:
:disabled
,获得不可用元素;如:$("input[type = 'text']:disabled").val("diabled")
,获取改变表单中不可用<input>
元素的值。
- 语法:
- 选中选择器1:
- 语法:
:checked
,获得单选/复选框中选中的元素。
- 语法:
- 选中选择器2:
- 语法:
:selected
,获得下拉框中选中的元素。如:$("#job > option :selected")
,获取下拉框选中的元素,若为多个,则相当于存在一个数组中。
- 语法:
DOM操作
内容操作
html()
:获取/设置元素的标签体内容,标签体内容包括该标签中嵌套的标签。text()
:获取/设置元素的标签体的纯文本内容。val()
:获取/设置元素的value属性值。
- 注:方法中不传参数,就是获取元素对应内容,方法中传递参数就是修改元素对应的内容。
属性操作
- 通用属性操作:
attr()
:获取设置元素的属性,参数只有属性名则获取属性值,如果参数还有属性值则设置属性值。如:$("#bj").attr("name")
和$("#bj").attr("name","beijing")
- removeAttr()`:删除属性。
prop()
:获取设置元素的属性;- removeProp()`:删除属性。
- attr和prop的区别:
- 如果操作的是元素的固有属性,则建议使用prop;
- 如果操作的是元素的自定义属性,则建议使用attr。
- 对class属性的操作:
addClass()
:添加class属性值;removeClass()
:删除class属性值,如:removeClass("one")
,删除class="one"的属性。toggleClass()
:切换class属性值;- 如:
toggleClass("one")
:判断元素对象上存在class=“one”,则将属性值one删除掉;如果元素对象上不存在class=“one”,则添加。
- 如:
- CRUD操作:
append()
:父元素将子元素追加到末尾。- 对象1.append(对象2):将对象2添加到对象1元素内部,并且在末尾。(对象2会移动)
prepend()
:父元素将子元素追加到开头。- 对象1.perpend(对象2):将对象2添加到对象1元素内部,并且在开头。
appendTo()
:- 对象1.appendTo(对象2):将对象1添加到对象2内部,并且在末尾。
prependTo()
:- 对象1.prepend(对象2):将对象1添加到对象2内部,并且在开头。
after()
:添加元素到元素后边- 对象1.after(对象2):将对象2添加到对象1后边,对象1和对象2是兄弟关系。
before()
:添加元素到元素前边- 对象1.before(对象2):将对象2添加对象1前边,对象1和对象2是兄弟关系。
insertAfter()
:- 对象1.insertAfter(对象2):将对象1添加到对象2后边,对象1和对象2是兄弟关系。
insertBefore()
:- 对象1.insertBefore(对象2):将对象1添加到对象2前边,对象1和对象2是兄弟关系。
remove()
:移除元素- 对象.remove():将对象删除掉;
empty()
:清空元素的所有后代元素。- 对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性节点。
clone()
:克隆元素并且选中这些克隆。
JQuery动画
-
默认显示和隐藏方式:
show([speed], [easing],[fn])
:- speed:动画的速度。三个预定义的值(slow,normal,fast)或表示动画时长的毫秒数值(如:1000);
- easing:用来指定切换效果。默认是swing,可用参数是linear;
- swing:动画执行时效果是,先慢,中间快,最后又慢。
- linear:动画执行是匀速的。
- fn:在动画执行结束时执行的函数,每个元素执行一次。
hide([speed], [easing],[fn])
;toggle([speed], [easing],[fn])
:在show和hide之间切换。
-
JQuery动画效果是同通过修改元素属性来实现的,如hide()就会设置的其中一个属性就是:
style="display:none"
-
滑动显示和隐藏方式:
slideDown([speed], [easing],[fn])
slideUp([speed], [easing],[fn])
slideToggle([speed], [easing],[fn])
-
淡入淡出显示和隐藏方式:
fadeIn([speed],[easing],[fn])
fadeOut([speed],[easing],[fn])
fadeToggle([speed],[easing],[fn])
JQuery遍历
- JS的遍历方式:
for(初始化值;循环结束条件;步长)
,也适用于JQ - JQ的遍历方式:
jq对象.each(callback)
:callback是一个函数。- 语法:
jq对象.each(function(index,element)[]{})
index
:就是元素在集合中的索引element
:就是集合中每一个元素对象。this
:集合中的当前元素对象。
- 回调函数的返回值:
false
:如果当前的function返回为false,则结束循环。(break)true
:如果当前的function返回为true,则结束本次循环,继续下次循环。(continue)
- 语法:
$.each(object, callback)
,其中callback是回调函数。for...of:jq对象
:3.0版本后提供的方式- 语法:
for(元素对象 of 容器对象)
.
- 语法:
JQuery事件绑定
- jquery标准事件绑定方式:
jq对象.事件方法(回调函数)
- 如果调用事件方法,不传递回调函数,则会触发浏览器的默认行为。如:
jq对象.focus()
,使对象获得焦点;表单对象.submit()
,使表单提交。
- 如果调用事件方法,不传递回调函数,则会触发浏览器的默认行为。如:
- on绑定事件/off解除绑定:
jq对象.on("事件名称",回调函数)
;jq对象.off("事件名称")
:- 如果off方法不传递任何参数,则将组件上的所有事件全部解除。
- 事件切换:toggle
jq对象.toggle(fn1,fn2,...)
:当单击jq对象对应的组件后,会执行fn1,第二次点击会执行fn2,依次循环往复。- 注意:1.9版本后,toggle方法的事件切换功能被删除,jquery Migrate插件(js代码)可以恢复此功能。此js文件需要自行下载。
<script src="../js/jquery-migrate-1.0.0.js" type="text/javascript" charset="utf-8"></script>
JQuery插件
$.fn.extend(object)
:- 增强通过jquery获取的对象的功能。(即
$("选择器")
的功能)
- 增强通过jquery获取的对象的功能。(即
$.extend(object)
:- 增强JQuery对象自身的功能。(即
$
自身的功能)
- 增强JQuery对象自身的功能。(即
- 示例:
$.extend({
max:function(a,b) {
return a >= b ? a : b;
},
min:function(a,b) {
return a <= b ? a : b;
}
})
$.max(2,3);
$.fn.extend({
check:function(a,b) {
alert("check");
}
})
$("btn-check").check();