Jquery
2021-02-07 09:44:19 34 举报
AI智能生成
jQuery思维导图
作者其他创作
大纲/内容
jQuery简介与使用方式
http://jquery.com<br>一个优秀的JS函数库<br>封装简化DOM操作
引入jQuery库
引入方式
本地引入
CDN远程引入
引入版本
测试版(未压缩版)
生产版(压缩版)
使用jQuery
使用jQuery函数:$/jQuery
使用jQuery对象:$xxx(执行$()得到的)<br>
jQuery的功能
HTML元素选取(选择器)
HTML元素操作
CSS操作
HTML事件处理
JS动画效果
链式调用
可以通过 . 不断调用jQuery对象的方法
读写合一
读数据与写数据用的是一个函数
浏览器兼容
易扩展插件
ajax封装
使用jQuery核心函数
jQuery函数:$/jQuery
作为一般函数调用:$(param)
param是function: 相当于window.onload = function(文档加载完成的监听)
param是选择器字符串: 查找所有匹配的DOM元素, 返回包含所有DOM元素的jQuery对象
param是DOM元素: 将DOM元素对象包装为jQuery对象返回 $(this)
param是标签字符串: 创建标签DOM元素对象并包装为jQuery对象返回
作为对象使用: $.xxx()
例如:<br>$.each():隐式遍历数组<br>$.trim():去除俩段空格<br>
选择器
说明
选择器本身只是一个有特定语法规则的字符串,没有实质用处
它的基本语法规则使用的就是CSS的选择器语法,并对其进行了扩展
只有调用$(),并将选择器作为参数传入才能起作用
$(selector)作用:<br> 根据选择器规则在整个文档中查找所有匹配的标签的数组,并封装成jQuery对象返回
分类
基本选择器
基本常用的选择器
#id<br>ID选择器<br>根据给定的id匹配元素<br>
$(" #title")<br>选取id为title的元素<br>
element<br>标签选择器<br>根据给定的标签名匹配元素<br>
$("h2" )<br>选取所有h2元素<br>
.class<br>类选择器<br>根据给定的class匹配元素<br>
$(" .title")<br>选取所有class为title的元素<br>
*<br>通配符<br>匹配所有元素<br>
$("*" )<br>选取所有元素<br>
selector1,selector2,selectorN<br>并集选择器<br>将每一个选择器匹配的元素合并后一起返回<br>
$("div,p,.title" )<br>选取所有div、p和拥有class为title的元素<br>
selector1selector2selectorN<br>交集选择器<br>匹配指定class或id的某元素或元素集合<br>
$("h2.title")<br>选取所有拥有class为title的h2元素<br>
层次选择器
用来查找子元素,后代元素,兄弟元素的选择器
ancestor descendant<br>后代选择器<br>选取ancestor元素里的所有descendant(后代)元素<br>
$("#menu span" )<br>选取#menu下的<span>元素<br>
parent >child<br>子选择器<br>选取parent元素下的child(子)元素<br>
$(" #menu>span" )<br>选取#menu的子元素<span><br>
prev+next<br>相邻元素选择器<br>选取紧邻prev元素之后的next元素<br>
$(" h2+dl " )<br>选取紧邻<h2>元素之后的同辈元素<dl><br>
prev~sibings<br>同辈元素选择器<br>选取prev元素之后的所有siblings元素<br>
$(" h2~dl " )<br>选取<h2>元素之后所有的同辈元素<dl><br>
过滤选择器
在原有选择器匹配的元素中进一步进行过滤的选择器
基本过滤选择器<br>可以选取第一个元素、最后一个元素、索引为偶数或奇数的元素<br>可以根据索引的值选取元素<br>还支持一些特殊的选择方式<br>
:first<br>选取第一个元素<br>
$(" li:first" )<br>选取所有<li>元素中的第一个<li>元素<br>
:last<br>选取最后一个元素<br>
$(" li:last" )<br>选取所有<li>元素中的最后一个<li>元素<br>
:even<br>选取索引是偶数的所有元素(index从0开始)<br>
$(" li:even" )<br>选取索引是偶数的所有<li>元素<br>
:odd<br>选取索引是奇数的所有元素(index从0开始)<br>
$(" li:odd" )<br>选取索引是奇数的所有<li>元素<br>
:eq(index)<br>选取索引等于index的元素(index从0开始)<br>
$("li:eq(1)" )<br>选取索引等于1的<li>元素<br>
:gt(index)<br>选取索引大于index的元素(index从0开始)<br>
$(" li:gt(1)" )<br>选取索引大于1的<li>元素(注:大于1,不包括1)<br>
:lt(index<br>选取索引小于index的元素(index从0开始)<br>
$(“li:lt(1)” )<br>选取索引小于1的<li>元素(注:小于1,不包括1)<br>
:not(selector)<br>选取去除所有与给定选择器匹配的元素<br>
$(" li:not(.three)" )<br>选取class不是three的元素<br>
:header<br>选取所有标题元素,如h1~h6<br>
$(":header" )<br>选取网页中所有标题元素<br>
:focus<br>选取当前获取焦点的元素<br>
$(":focus" )<br>选取当前获取焦点的元素<br>
:not(selector)<br>选取去除所有与给定选择器匹配的元素<br>
$(" li:not(.three)" )<br>选取class不是three的元素<br>
:header<br>选取所有标题元素,如h1~h6<br>
$(":header" )<br>选取网页中所有标题元素<br>
:focus<br>选取当前获取焦点的元素<br>
$(":focus" )<br>选取当前获取焦点的元素<br>
可见性过滤选择器<br>可以通过元素显示状态来选取元素<br>
:visible<br>选取所有可见的元素<br>
$(":visible" )<br>选取所有可见的元素<br>
:hidden<br>选取所有隐藏的元素<br>
$(":hidden" ) <br>选取所有隐藏的元素<br>
内容选择器
:contanins(text)<br>匹配包含给定文本的元素<br>
$("div:contains('John')")<br>查找所有包含 "John" 的 div 元素<br>
:empty<br>匹配所有不包含子元素或者文本的空元素<br>
$("td:empty")<br>查找所有不包含子元素或者文本的td元素<br>
:has(selector)<br>匹配含有选择器所匹配的元素的元素<br>
$("div:has(p)").addClass("test")<br>给所有包含 p 元素的 div 元素添加一个 text 类<br>
:parent<br>匹配含有子元素或者文本的元素<br>
$("td:parent")<br>查找所有含有子元素或者文本的 td 元素<br>
属性选择器<br>通过HTML元素的属性来选择元素<br>
[attribute]<br>选取包含给定属性的元素<br>
$(" [href]" )<br>选取含有href属性的元素<br>
[attribute=value]<br>选取等于给定属性是某个特定值的元素<br>
$(" [href ='#']" )<br>选取href属性值为“#”的元素<br>
[attribute !=value]<br>选取不等于给定属性是某个特定值的元素<br>
$(" [href !='#']" )<br>选取href属性值不为“#”的元素<br>
[attribute^=value]<br>选取给定属性是以某些特定值开始的元素<br>
$(" [href^='en']" )<br>选取href属性值以en开头的元素<br>
[attribute$=value]<br>选取给定属性是以某些特定值结尾的元素<br>
$(" [href$='.jpg']" )<br>选取href属性值以.jpg结尾的元素<br>
[attribute*=value]<br>选取给定属性是以包含某些值的元素<br>
$(" [href* ='txt']" )<br>选取href属性值中含有txt的元素<br>
[selector] [selector2] [selectorN]<br>选取满足多个条件的复合属性的元素<br>
$("li[id][title=新闻要点]" )<br>选取含有id属性和title属性为新闻要点的<li>元素<br>
表单选择器
表单
:input<br>匹配所有 input, textarea, select 和 button 元素<br>
$(":input")<br>查找所有的input元素<br>
:text<br>匹配所有的单行文本框<br>
$(":text")<br>查找所有文本框<br>
:password<br>匹配所有密码框<br>
$(":password")<br>查找所有密码框<br>
:radio<br>匹配所有单选按钮<br>
$(":radio")<br>查找所有单选按钮<br>
:checkbox<br>匹配所有复选框<br>
$(":checkbox")<br>查找所有复选框<br>
:submit<br>匹配所有提交按钮<br>
$(":submit")<br>查找所有提交按钮<br>
:image<br>匹配所有图像域<br>
$(":image")<br>匹配所有图像域<br>
:reset<br>匹配所有重置按钮<br>
$(":reset")<br>查找所有重置按钮<br>
:file<br>匹配所有文件域<br>
$(":file")<br>查找所有文件域<br>
表单对象属性
:enabled<br>匹配所有可用元素<br>
$("input:enabled")<br>查找所有可用的input元素<br>
:disabled<br>匹配所有不可用元素<br>
$("input:disabled")<br>查找所有不可用的input元素<br>
:checked<br>匹配所有选中的被选中元素<br>
$("input:checked")<br>查找所有选中的复选框元素<br>
:selected<br>匹配所有选中的option元素<br>
$("select option:selected")<br>查找所有选中的选项元素<br>
工具
$.each()<br> 遍历数组或对象中的数据<br>
$.trim()<br>去除字符串两边的空格<br>
$.type(obj)<br> 得到数据的类型<br>
$.isArray(obj) <br>判断是否是数组<br>
$.isFunction(obj)<br> 判断是否是函数<br>
$.parseJSON(json) <br>解析json字符串转换为js对象/数组<br>
ajax
使用jQuery对象
即执行jQuery核心函数返回的对象<br>jQuery对象内部包含的是dom元素对象的伪数组(可能只有一个元素)<br>jQuery对象拥有很多有用的属性和方法,让程序员能方便的操作dom
. 属性和方法
基本行为
size()/length<br>得到dom元素的个数<br>
[index]/get(index)<br>得到指定下标对应的dom元素<br>
each(function(index, domEle){})<br> 遍历所有dom元素<br>
index()<br>得到当前dom元素在所有兄弟中的下标<br>
属性
操作内部标签的属性或值
attr()<br> removeAttr()<br> prop()<br>操作任意属性<br>
addClass()<br> removeClass()<br>操作class属性<br>
html()<br> val()<br>操作HTML代码/文本/值<br>
CSS
操作标签的样式
css()<br>设置css样式/读取css值<br>
css(styleName): <br>根据样式名得到对应的值<br>
css(styleName, value): <br>设置一个样式<br>
*$('p:eq(1)').css({<br> color: '#ff0011',<br> background: 'blue',<br> width: 300,<br> height: 30<br> })<br>设置第2个p的字体颜色(#ff0011),背景(blue),宽(300px), 高(30px)<br>
css({多个样式对}): <br>设置多个样式<br>
位置坐标
offset():<br> 读/写当前元素坐标(原点是页面左上角)<br>
position(): <br>读当前元素坐标(原点是父元素左上角)<br>
scrollTop()/scrollLeft():<br> 读/写元素/页面的滚动条坐标<br>
尺寸
* width()/height(): width/height<br> * innerWidth()/innerHeight(): width + padding<br> * outerWidth()/outerHeight(): width + padding + border
文档
对标签进行增删改操作
offset() 读/写当前元素坐标<br>相对页面左上角的坐标<br>
position() 读写当前元素坐标<br>相对于父元素左上角的坐标<br>
scrollTop()/scrollLeft() 读/写元素/页面的滚动条坐标
添加/替换元素
append(content)/appendTo(content)<br>向当前匹配的所有元素内部的最后插入指定内容<br>
prepend(content)/prependTo(content)<br>向当前匹配的所有元素内部的最前面插入指定内容<br>
before(content)<br>将指定内容插入到当前所有匹配元素的前面<br>
after(content)<br>将指定内容插入到当前所有匹配元素的后面替换节点<br>
replaceWith(content)<br>用指定内容替换所有匹配的标签删除节点<br>
删除元素
empty()<br>删除所有匹配元素的子元素<br>
remove()<br>删除所有匹配的元素<br>
筛选
根据指定的规则过滤内部的标签
first()<br>获取第一个元素<br>
last()<br>获取最后一个元素
eq(index|-index)<br>获取下标位置元素
filter(selector) 对当前元素提要求<br>筛选出与指定表达式匹配的元素集合。<br>这个方法用于缩小匹配的范围。用逗号分隔多个表达式<br>
not(selector) 对当前元素提要求,并取反<br>从匹配元素的集合中删除与指定表达式匹配的元素<br>
has(selector) 对子孙元素提要求<br>保留包含特定后代的元素,去掉那些不含有指定后代的元素。<br>
在已经匹配出的元素集合中根据选择器查找孩子/父母/兄弟标签<br>children(): 子标签中找 <br>find() : 后代标签中找 <br>parent() : 父标签 <br>prevAll() : 前面所有的兄弟标签 <br>nextAll() : 后面所有的兄弟标签 <br>siblings() : 前后所有的兄弟标签 <br>
事件
处理事件监听相关
eventName(function(){})<br> 绑定对应事件名的监听
例如:$('#div').click(function(){});
on(eventName, funcion(){})<br> 通用的绑定事件监听
例如:$('#div').on('click', function(){})<br>
事件解绑: <br> off(eventName)
事件的坐标
event.clientX, event.clientY 相对于视口的左上角 <br>event.pageX, event.pageY 相对于页面的左上角 <br>event.offsetX, event.offsetY 相对于事件元素左上角
事件相关处理
停止事件冒泡 : event.stopPropagation() <br>阻止事件默认行为 : event.preventDefault()
区别mouseover与mouseenter
mouseover: 在移入子元素时也会触发, 对应mouseout <br>mouseenter: 只在移入当前元素时才触发, 对应mouseleave <br> hover()使用的就是mouseenter()和mouseleave()
事件委托<br> 将子元素的事件委托给父元素处理
jQuery的事件委托API<br> * 设置事件委托: $(parentSelector).delegate(childrenSelector, eventName, callback)<br> * 移除事件委托: $(parentSelector).undelegate(eventName)
例如<br> //事件委托<br> $('ul').delegate('li', 'click', function () {<br> this.style.background = 'red'<br> })<br><br> $('#btn1').click(function () {<br> $('ul').append('<li>xxxxxxxxx</li>')<br> })<br><br> $('#btn2').click(function () {<br> // 移除事件委托<br> $('ul').undelegate()<br> })<br>
效果
实现一些动画效果
淡入淡出: <br>不断改变元素的透明度来实现的<br>
fadeIn():<br> 带动画的显示<br>
fadeOut():<br> 带动画隐藏<br>
fadeToggle(): <br>带动画切换显示/隐藏<br>
滑动动画
slideDown(): <br>带动画的展开<br>
slideUp(): <br>带动画的收缩<br>
slideToggle(): <br>带动画的切换展开/收缩<br>
显示隐藏,<br>默认没有动画<br>
show():<br> (不)带动画的显示<br>
hide():<br> (不)带动画的隐藏<br>
toggle():<br> (不)带动画的切换显示/隐藏<br>
jQuery动画本质 :<br>在指定时间内不断改变元素样式值来实现的<br>
animate(): <br>自定义动画效果的动画<br>
stop(): <br>停止动画<br>
window.onload与 $(document).ready()的区别
window.onload<br> * 包括页面的图片加载完后才会回调(晚)<br> * 只能有一个监听回调
$(document).ready()<br> * 等同于: $(function(){})<br> * 页面加载完就回调(早)<br> * 可以有多个监听回调
多库共存
如果有2个库都有$, 就存在冲突
jQuery库可以释放$的使用权, 让另一个库可以正常使用, 此时jQuery库只能使用jQuery了<br>API : jQuery.noConflict()
jQuery插件
扩展插件
扩展jQuery的工具方法
$.extend(object)<br>扩展jQuery的工具方法<br>
//扩展$ <br>$.extend({<br> min: function (a, b) {<br> return (a < b) ? a : b<br> },<br> max: function (a, b) {<br> return (a > b) ? a : b<br> }<br>})<br>
扩展jQuery对象的方法
$.fn.extend(object)<br>扩展jQuery对象的方法<br>
$.fn.extend({<br> checkAll: function () {<br> // console.log('checkAll')<br> this.prop('checked', true)<br> },<br> unCheckAll: function () {<br> this.prop('checked', false)<br> }<br>})<br>
jQuery插件
理解
基于jQuery编写的扩展库
http://plugins.jquery.com/
jquery-validation
表单插件
jquery UI<br>http://jqueryui.com
手风琴
自动搜索匹配
选项卡
laydate<br>http://www.layui.com/laydate
日期插件
0 条评论
下一页