JQuery笔记汇总
jQuery相关资料
- 官网: jQuery官网
- 在线API: jQuery在线API
- W3School:W3School-jQuery教程(中文版哦)
- 下载jQuery:jQuery各版本下载
- jQurey3.0: jQuery 3.0 更新
- 参考书:《锋利的jQuery》、《jQuery技术内幕-深入解析jQuery架构设计与实现原理》
课程内容介绍
- 1 jQuery基本使用和jQuery选择器
- 2 jQuery的DOM操作
- 3 jQuery事件、插件
1 jQuery的基本使用和jQuery选择器
1.1 为什么要学jQuery?
1.1.1 学习JS的遇到的痛点
- 1 window.onload 事件只能出现一次
- 2 浏览器兼容性问题
- 3 简单功能实现很繁琐
- 4 属性或方法的名字很长容易出错
1.2 jQuery是什么?
1.2.1 jQuery描述(理解)
jQuery是js的一个库,封装了我们开发过程中常用的一些功能,方便我们来调用,提高了我们的开发效率。 Js库是把我们常用的方法放到一个单独的文件中,我们用的时候,直接引用到页面里面来就可以了。
animate.js是我们自己封装的库,而jQuery是别人帮我们封装好的库。
1.2.2 学习jQuery主要是学什么?
- 1 学习jQuery提供的操作DOM的方法
目前这个阶段,主要学习如何来使用jQuery操作DOM,其实就是学习jQuery封装好的那些方法,
这些方法叫做 API(Application Programming Interface 应用程序编程接口)。
这些API的共同特点是:几乎全都是方法。所以,在使用jQuery的API时,都是方法调用,
也就是说要加小括号(),小括号里面是相应的参数,参数不同,功能不同。
1.3 如何使用jQuery?(重点)
- 使用步骤:
1.引入jQuery文件
2.入口函数
3.功能实现代码(事件处理)
- 案例:点击按钮设置文字和展示div功能
1.3.1 jQuery的优势
1.4 jQuery详细解释
1.4.1 版本介绍(了解)
- jQuery的三个版本:
v1.xx 版本(使用)
v2.xx 版本 和 v3.xx 版本(最新版,是v2.xx版本的延续)
v3.xx 版本包含了两个版本:普通版和瘦身版(提交更小) 版本的区别:2.x版本和3.x版本,不再支持IE6、7、8 考虑兼容性使用:1.xx版本
- 各版本的兼容性
v1.xx 版本: 兼容 IE6-8,以及其他浏览器
v2.xx 和 v3.xx 版本: 兼容 IE9+, 以及其他浏览器
- 同版本两个文件的区别:(压缩和不压缩的区别)
min:压缩版,压缩过后,体积会更小 压缩指的是:把注释、空格、换行全部去掉,把变量名称尽可能的换成更加简短的字符。
压缩的主要目的:就是让文件变的更小。 两个文件的选择建议:
平时开发过程中,这两个文件使用哪个都可以;但是,项目上线的时候,一定要使用压缩版。
1.4.2 引包注意点(理解)
- 1 先引用jQuery文件再写jQuery代码
- 2 src路径要正确
1.4.3 jQuery的入口函数(重点)
- 方式一:
$(document).ready(function(){// 功能代码});
- 方式二:
$(function(){// 功能代码});
1.4.4 jQuery入口函数与js入口函数的区别(理解)
- js入口函数指的是:window.onload = function() {};
- 区别:
1、书写个数不同
Js入口函数只能出现一次,出现多次会存在事件覆盖的问题。
jQuery的入口函数,可以出现任意多次,并不会存在事件覆盖问题。 2、执行时机不同
Js入口函数是在文档和所有的其他资源文件加载完成后,才执行。
这些文件资源包括:页面文档、外部的js文件、外部的css文件、图片等。 jQuery的入口函数,是在文档加载完成后,就执行。文档加载完成指的是:DOM树加载完成后,就可以操作DOM了,
不用等到所有的外部资源都加载完成。
- 文档加载的顺序:从上往下,边解析边执行。
1.4.5 jQuery的$符号(重点)
- Js命名规范允许出现的字符有:数字、字母、下划线、$。
Js命名规范允许作为变量命名开头的字符有:字母、下划线、$;但是,不允许以数字作为变量命名的开头。
示例:
var $ = "我是字符串";var $ = 123;function $(){alert("我是函数$");}$(); // 调用我们自定义的函数$
- jQuery里面的$符号实际上是一个函数
// jQuery里面使用$的方式
$(document).ready(function(){ }); // 调用入口函数
$(function(){ }); // 调用入口函数
$("#btnShow") // 获取id属性为btnShow的元素
$("div") // 获取所有的div元素 jQuery里面的$函数,根据传入参数的不同,进行不同的调用,实现不同的功能。返回的是jQuery对象 jQuery这个js库,除了$之外,还提供了另外一个函数:jQuery
jQuery函数跟$函数的关系:jQuery === $ => true
1.4.6 jQuery对象和DOM对象的相互转换(难点)
- DOM对象:通过DOM的API获取到的对象
// btn就是一个DOM对象var btn = document.getElementById("btnShow");
- jQuery对象:通过jQuery的API获取到的对象
// $btn就是一个jQuery对象var $btn = $("#btnShow");
jQuery对象是包装的DOM对象的集合,即:包装集
DOM对象转换成jQuery对象:
var $btn = $(btn); // 此时就把DOM对象btn转换成了jQuery对象$btn
- jQuery对象转换成DOM对象:
// 方式一(推荐使用此方式)
var btn1 = $btn[0];
// 方式二
var btn2 = $btn.get(0); 以上两种方式都要记住,使用哪一种都可以。 所有这些,都体现了jQuery对js的封装!
1.5 JS跟jQuery的区别是什么?(理解)
1.6 jQuery选择器
1.6.1 JS提供的选择DOM元素的方法
- 考虑兼容性的话,js里面提供的选择DOM的方法只有两个:
// 通过id属性获取指定元素
document.getElementById(); // 通过标签名获取指定元素
document.getElementsByTagName();
1.6.2 强大的jQuery选择器(重点)
jQuery实现了从CSS1到CSS3所有的选择器以及其他常用的选择器,各种选择器之间可以相互代替
1.6.3 jQuery选择器(重点)
- ID选择器(一般尽量用ID选择器,效率最高)
- $("#id")
- 标签选择器
- $('p')
- 类选择器
- $(".className")
- 后代选择器
- $("li .link")
- 父子选择器
- $("ul > li")
- 伪类选择器
- $("ul li:eq(3)")
- $("li:even")
- $("li:odd")
- 表单选择器
- $(":checkbox")
- $(":checked")
- $(":text")
- 属性选择器
- $("li[id]")
- $("li[id='link']")
1.6.4 常用选择器汇总
* $("*") 所有元素
#id $("#lastname") id="lastname" 的元素
.class $(".intro") 所有 class="intro" 的元素
element $("p") 所有 <p> 元素
.class.class $(".intro.demo") 所有 class 具有 "intro" 且 "demo" 的元素
s1,s2,s3 $("th,td,.intro") 所有带有匹配选择的元素
:even $("tr:even") 所有偶数 <tr> 元素
:odd $("tr:odd") 所有奇数 <tr> 元素
:first $("p:first") 第一个 <p> 元素
:last $("p:last") 最后一个 <p> 元素
:eq(index) $("ul li:eq(3)") 列表中的第四个元素(index 从 0 开始)
:gt(index) $("ul li:gt(3)") 列出 index 大于 3 的元素 greater than
:lt(index) $("ul li:lt(3)") 列出 index 小于 3 的元素 less than
:not(selector) $("input:not(:empty)") 所有不为空的 input 元素 :header $(":header") 所有标题元素 <h1> - <h6>
:animated $(":animated") 所有正在执行动画的元素
:contains(text) $(":contains('W3School')") 包含指定字符串的所有元素
:empty $(":empty") 无子(元素)节点的所有元素
:hidden $("p:hidden") 所有隐藏的 <p> 元素
:visible $("table:visible") 所有可见的表格
[attribute] $("[href]") 所有带有 href 属性的元素
[attribute=value] $("[href='#']") 所有 href 属性的值等于 "#" 的元素
[attribute!=value] $("[href!='#']") 所有 href 属性的值不等于 "#" 的元素
[attribute$=value] $("[href$='.jpg']") 所有 href 属性的值包含以 ".jpg" 结尾的元素
:input $(":input") 所有 <input> 元素
:text $(":text") 所有 type="text" 的 <input> 元素
:password $(":password") 所有 type="password" 的 <input> 元素
:radio $(":radio") 所有 type="radio" 的 <input> 元素
:checkbox $(":checkbox") 所有 type="checkbox" 的 <input> 元素
:submit $(":submit") 所有 type="submit" 的 <input> 元素
:reset $(":reset") 所有 type="reset" 的 <input> 元素
:button $(":button") 所有 按钮元素(<button></button> 或者 input="button")
:image $(":image") 所有 type="image" 的 <input> 元素
:file $(":file") 所有 type="file" 的 <input> 元素
:enabled $(":enabled") 所有激活的 input 元素
:disabled $(":disabled") 所有禁用的 input 元素
:selected $(":selected") 所有被选取的 input 元素
:checked $(":checked") 所有被选中的 input 元素
1.6.5 jQuery选择方法
- 获取父级元素
* $(selector).parent(); //获取直接父级
$(selector).parents('p'); //获取所有父级元素直到html
- 获取子代和后代的元素
* $(selector).children(); //获取直接子元素
* $(selector).find("span"); //获取所有的后代元素 find方法 可能用的多。
- 获取同级的元素
* $(selector).siblings() //所有的兄弟节点
$(selector).next() //下一个兄弟节点
$(selector).nextAll() //后面的所有节点
$(selector).prev() //前面一个的兄弟节点
$(selector).prevAll() //前面的所有的兄弟节点
- 过滤方法
* $("p").eq(1); //取第n个元素
$("div p").last(); //取最后一个元素
$("div p").first(); //取第一个元素
$("p").filter(".intro"); //过滤,选择所有带有 .intro 的p标签
$("p").not(".intro"); //去除,跟上面的filetr正好相反
- 获取当前元素的索引号
* $("li:eq(2)").index(); // 获取索引号
2 jQuery常用DOM操作
2.1 样式操作(重点)
2.1.1 基本样式属性操作
作用:设置或获取元素的样式属性值
- 设置样式属性操作
设置单个样式: // 第一个参数表示:样式属性名称
// 第二个参数表示:样式属性值
$(selector).css("color", "red"); 设置多个样式:(也可以设置单个)
// 参数为 {}(对象)
$(selector).css({"color": "red", "font-size": "30px"});
- 获取样式属性操作:
// 参数表示要获取的 样式属性名称
var fs = $(selector).css("font-size");
2.1.2 类样式操作
- 添加类样式:
作用:为指定元素添加类className $(selector).addClass("liItem");
- 移除类样式:
作用:为指定元素移除类 className $(selector).removeClass("liItem");
$(selector).removeClass(); 不指定参数,表示移除被选中元素的所有类
- 判断有没有类样式:
作用:判断指定元素是否包含类 className var hasC = $(selector).hasClass("liItem");
此时,会返回true或false
- 切换类样式:
作用:为指定元素切换类 className,该元素有类则移除,没有指定类则添加。 $(selector).toggleClass("liItem");
- 注意点:
操作类样式的时候,所有的类名 都不带点(.) 经验:
1 操作的样式非常少,那么可以通过.css()这个 方法来操作
2 操作的样式很多,那么要通过使用类的方式来操作 3 如果考虑以后维护方便(把CSS从js中分离出来)的话,推荐使用类的方式来操作。类比CSS书写位置(把css从html中分离出来)
2.2 jQuery动画
前面内容特色总结:简约、"粗暴"、干净利落、直截了当 jQuery动画是:
jQuery提供的一组网页中常见的动画效果,这些动画是标准的、有规律的效果;
同时还提供给我们了自定义动画的功能。
2.2.1 隐藏和显示
- 显示方法 show()
作用:让匹配的元素展示出来 // 用法一:
// 参数为数值类型,表示:执行动画时长
/* 单位为:毫秒(ms),参数2000表示动画执行时长为2000毫秒,即2秒钟 */
$(selector).show(2000); // 用法二:
// 参数为字符串类型,是jQuery预设的值,共有三个,分别是:slow、normal、fast
/* 跟用法一的对应关系为: */
/* slow:600ms、normal:400ms、fast:200ms */
$(selector).show("slow"); // 用法三:
// 参数一:可以是数值类型或者字符串类型
// 参数二:动画执行完后立即执行的回调函数
$(selector).show(2000, function() {}); // 用法四:
// 不带参数,作用等同于 css("display", "block")
/* 注意:此时没有动画效果 */
$(selector).show(); 注意:
jQuery预设的三组动画效果的语法几乎一致:
参数可以有两个,第一个是动画的执行时长,第二个是动画执行完成后的回调函数。
第一个参数可以是:指定字符或者毫秒数
- 隐藏方法 hide()
作用:让匹配元素隐藏掉(用法参考show方法)
$(selector).hide(1000);
$(selector).hide("slow");
$(selector).hide(1000, function(){});
$(selector).hide();
2.2.2 滑入滑出动画
- 滑入动画效果 slideDown()
作用:让元素以下拉动画效果展示出来
$(selector).slideDown(speed, callback);
$(selector).slideDown();
- 滑出动画效果 slideUp()
作用:让元素以上拉动画效果隐藏起来
$(selector).slideUp(speed, callback);
- 滑入滑出切换动画效果 slideToggle()
$(selector).slideToggle(speed, callback);
- 注意点:省略参数或者传入不合法的字符串,那么则使用默认值:400毫秒(同样适用于fadeIn/slideDown/slideUp)
2.2.3 淡入淡出动画
1 淡入动画效果
作用:让元素以淡淡的进入视线的方式展示出来
$(selector).fadeIn(speed, callback); 2 淡出动画效果
作用:让元素以渐渐消失的方式隐藏起来
$(selector).fadeOut(1000); 3 淡入淡出切换动画效果
作用:通过改变不透明度,切换匹配元素的显示或隐藏状态
$(selector).fadeToggle('fast', callback);
- 改变不透明度到某个值
作用:改变匹配元素的不透明度
// 用法有别于其他动画效果
// 第一个参数表示:时长
// 第二个参数表示:不透明度值,取值范围:0-1
$(selector).fadeTo(1000, .5); // 0全透,1全不透 // 第一个参数为0,此时作用相当于:.css("opacity", .5);
$(selector).fadeTo(0, .5); 与淡入淡出的区别:淡入淡出只能控制元素的不透明度从 完全不透明 到 完全透明;
而fadeTo可以指定元素不透明度的具体值。
- jQuery提供的动画使用方法总结:
2.2.4 自定义动画
- jQuery内置动画的规律:
jQuery提供的这几个动画效果控制的CSS属性包括:高度、宽度、不透明度。{height: 400px; width: 300px; opacity: .4;} 这三个CSS属性的共性是:
1 样式属性的值只有一个
2 这个值是数值(去掉单位后)。
注意:所有能够执行动画的属性必须只有一个数字类型的值。
比如:要改变字体大小,要使用:fontSize(font-size),不要使用:font
- 自定义动画 animate()
作用:执行一组CSS属性的自定义动画
// 第一个参数表示:要执行动画的CSS属性(必选)
// 第二个参数表示:执行动画时长(可选)
// 第三个参数表示:动画执行完后立即执行的回调函数(可选)
$(selector).animate({params}, speed, callback);
2.2.5 停止动画 stop() (了解)
作用:停止当前正在执行的动画 // 第一个参数表示是否清空所有的后续动画
// 第二个参数表示是否立即执行完当前正在执行的动画
$(selector).stop(clearQueue, jumpToEnd);
- 解释:
stop(true, true) 后续动画不会执行,当前动画立即跳到结束的位置
stop(true, false) 后续动画不会执行,当前动画立即停止
stop(false, true) 立即执行后续动画,当前动画立即跳到结束的位置
stop(false, false) 立即执行后续动画,当前动画立即停止
- 注意:如果元素动画还没有执行完,调用sotp() 那么回调函数不会被执行
2.4 jQuery节点操作
2.4.1 动态创建元素
// $()函数的另外一个作用:动态创建元素
var $spanNode = $("<span>我是一个span元素</span>");
2.4.2 添加元素(重点)
- append() 追加元素 (重点)
作用:在被选元素内部的最后一个子元素(或内容)后面插入内容(页面中存在或者创建出来的元素都可以) // 在$(selector)中追加$node
$(selector).append($node);
// 在$(selector)中追加div元素,参数为htmlString
$(selector).append('<div></div>'); 注意:
如果是页面中存在的元素,那么调用append()后,会把这个元素从原先的位置移除,然后再插入到新的位置。
如果是给多个目标追加一个元素,那么append()方法的内部会复制多份这个元素,然后追加到多个目标里面去。(最好不要这么做)
常用参数:htmlString 或者 jQuery对象
- 不常用操作:(用法跟append()方法基本一致)(了解)
$(selector).appendTo(node); 作用:同append(),区别是:把$(selector)追加到node中去
$(selector).prepend(node); 作用:在元素的第一个子元素前面追加内容或节点
$(selector).after(node); 作用:在被选元素之后,作为兄弟元素插入内容或节点
$(selector).before(node); 作用:在被选元素之前,作为兄弟元素插入内容或节点
2.4.3 html创建元素(重点)
作用:设置或返回所选元素的html内容(包括 HTML 标记)
设置内容的时候,如果是html标记,会动态创建元素,此时作用跟js里面的 innerHTML属性相同 // 动态创建元素
$(selector).html("<span>传智播客</span>");
// 获取html内容
$(selector).html(); 总结:推荐使用html("<span></span>")方法来创建元素或者html("")清空元素
2.4.4 清空元素
// 清空指定元素的所有子元素(光杆司令)
// 没有参数
$(selector).empty();
$(selector).html(""); // "自杀" 把自己(包括所有内部元素)从文档中删除掉
$(selector).remove();
2.4.5 复制元素
作用:复制匹配的元素 // 复制$(selector)所匹配到的元素
// 返回值为复制的新元素
$(selector).clone();
2.5 操作form表单(重点)
2.5.1 属性操作
设置属性:
// 第一个参数表示:要设置的属性名称
// 第二个参数表示:改属性名称对应的值
$(selector).attr("title", "传智播客"); 获取属性:
// 参数为:要获取的属性的名称,改操作会返回指定属性对应的值
$(selector).attr("title");
此时,返回指定属性的值 移除属性:
// 参数为:要移除的属性的名称
$(selector).removeAttr("title"); 注意:checked、selected、disabled要使用 .prop() 方法。
prop方法通常用来影响DOM元素的动态状态,而不是改变的HTML属性。例如:input和button的disabled特性,以及checkbox的checked特性。
细节参考:http://api.jquery.com/prop/
2.5.2 值和内容
val()方法:
作用:设置或返回表单元素的值,例如:input,select,textarea的值
// 获取匹配元素的值,只匹配第一个元素
$(selector).val();
// 设置所有匹配到的元素的值
$(selector).val("具体值"); text() 方法:
作用:设置或获取匹配元素的文本内容
//获取操作不带参数(注意:这时候会把所有匹配到的元素内容拼接为一个字符串,不同于其他获取操作!)
$(selector).text();
//设置操作带参数,参数表示要设置的文本内容
$(selector).text("我是内容");
2.6 其他样式操作(了解)
$(selector).height() 设置或返回匹配元素的高度。// 数值类型
$(selector).width() 设置或返回匹配元素的宽度。// 数值类型
$(selector).css("height"); 字符串类型 $(selector).offset() 返回第一个匹配元素相对于文档左上角的位置。left,top
$(selector).offsetParent() 返回最近的定位祖先元素。
$(selector).position() 返回第一个匹配元素相对于父元素的位置。
$(window).scrollLeft() 设置或返回匹配元素相对滚动条左侧的偏移。
$(window).scrollTop(0) 设置或返回匹配元素相对滚动条顶部的偏移。 对scrollTop()的理解:
垂直滚动条位置 是可滚动区域 在 可视区域上方的 被隐藏区域的高度。
如果滚动条在最上方没有滚动 或者 当前元素没有出现滚动条,那么这个距离为0 $(selector).scroll(function() {}); 滚动事件
3 jQuery事件机制和补充
JS:
W3C : addEventListener / removeEventListener
IE : attachEvent / detachEvent jQuery的事件机制,指的是:jQuery对JavaScript操作DOM事件的封装,包括了:事件绑定、事件解绑、事件触发。
- 绑定事件示例:
JavaScript:
btn.onclick = function() {}; 表示:给这个按钮绑定事件 jQuery:
$btn.click(function() {}); 表示:给按钮绑定事件
3.1 jQuery事件的发展历程(了解)
简单事件绑定 >> bind事件绑定 >> delegate事件绑定 >> on【重点】
- 简单事件绑定
click(handler) 单击事件
blur(handler) 失去焦点事件
mouseenter(handler) 鼠标进入事件
mouseleave(handler) 鼠标离开事件
dblclick(handler) 双击事件
change(handler) 改变事件,如:文本框值改变,下来列表值改变等
focus(handler) 获得焦点事件
keydown(handler) 键盘按下事件 其他参考:http://www.w3school.com.cn/jquery/jquery_ref_events.asp
- bind方式(1.7以后的jQuery版本被on取代)
作用:给匹配到的元素直接绑定事件 // 绑定单击事件处理程序
第一个参数:事件类型
第二个参数:事件处理程序
$("p").bind("click mouseenter", function(e){
//事件响应方法
}); $("button").bind({
"click": function() {
alert("click");
},
"mouseenter": function() {
alert("enter");
}
}); 比简单事件绑定方式的优势:
可以同时绑定多个事件,比如:bind("mouseenter mouseleave", function(){ }); 缺点:要绑定事件的元素必须存在文档中。
- delegate方式(特点:性能高,支持动态创建的元素)
作用:给匹配到的元素绑定事件,对支持动态创建的元素有效
// 第一个参数:selector,要绑定事件的元素
// 第二个参数:事件类型
// 第三个参数:事件处理函数
$(".parentBox").delegate("p", "click", function(){
//为 .parentBox下面的所有的p标签绑定事件
});
与前两种方式最大的优势:减少事件绑定次数提高效率,支持动态创建出来的元素绑定事件!
3.1.1 on方式(最现代的方式,兼容z epto(移动端类似jQuery的一个库 ,强烈建议使用的方式)(重点)
jQuery1.7版本后,jQuery用on统一了所有的事件处理的方法
作用:给匹配的元素绑定事件,包括了上面所有绑定事件方式的优点 语法:
// 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
// 第二个参数:selector, 执行事件的后代元素
// 第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用
// 第四个参数:handler,事件处理函数
$(selector).on(events[,selector][,data],handler); // 表示给$(selector)绑定事件,当必须是它的内部元素span才能执行这个事件
$(selector).on("click", "span", function() {}); // 绑定多个事件
// 表示给$(selector)匹配的元素绑定单击和鼠标进入事件
$(selector).on("click mouseenter", function(){ });
3.1.2 事件解绑
- unbind() 方式 和 undelegate() 方式
作用:解绑 bind方式绑定的事件
$(selector).unbind(); //解绑所有的事件
$(selector).unbind("click"); //解绑指定的事件 作用:解绑delegate方式绑定的事件
$( selector ).undelegate(); //解绑所有的delegate事件
$( selector).undelegate( "click" ); //解绑所有的click事件
- off解绑on方式绑定的事件(重点)
// 解绑匹配元素的所有事件
$(selector).off();
// 解绑匹配元素的所有click事件
$(selector).off("click"); // 解绑所有代理的click事件,元素本身的事件不会被解绑
$(selector).off( "click", "**" );
3.1.3 事件触发
$(selector).click(); // 简单事件触发,触发 click事件
$(selector).trigger("click"); // trigger方法触发事件
$(selector).triggerHandler("focus"); // triggerHandler触发 事件响应方法,不触发浏览器行为 比如:文本框获得焦点的默认行为
3.1.4 jQuery事件对象介绍
event.data 传递给事件处理程序的额外数据 event.currentTarget 等同于this
event.delegateTarget 给谁绑定的事件,这个就是谁
event.target 触发事件源,不一定===this 单击的谁,target就是谁 event.pageX 鼠标相对于页面左边的位置 * event.stopPropagation(); 阻止事件冒泡
* event.preventDefault(); 阻止默认行为 event.type 事件类型:"click","dblclick"…
event.which 鼠标的按键类型:左1 中2 右3
event.keyCode 键盘按键代码 return false; // 同时具有阻止冒泡和阻止默认行为的功能
this:哪个元素触发的事件,this就指向这个元素。
3.2 jQuery补充
3.2.1 链式编程 和 隐式迭代
// 链式编程代码示例
$("li").parent("ul").parent("div").siblings("div").children("div").html("内容");
链式编程原理:return this;
通常情况下,只有设置操作才能把链式编程延续下去。因为获取操作的时候,会返回获取到的相应的值,无法返回 this。 end(); // 结束当前链最近的一次过滤操作,并且返回匹配元素之前的一次状态。 隐式迭代
// 设置操作
$("div").css("color", "red"); // 获取操作
$("div").css("color"); // 返回第一个元素的值
隐式迭代的意思是:在方法的内部会为匹配到的所有元素进行循环遍历,执行相应的方法;
而不用我们再进行循环,简化我们的操作,方便我们调用。 注意点:如果获取的是多元素的值,返回的是第一个元素的值。
3.2.2 each方法
- 有了隐式迭代,为什么还要使用each函数遍历?
大部分情况下是不需要使用each方法的,因为jQuery的隐式迭代特性。
如果要对每个元素做不同的处理,这时候就用到了each方法 作用:遍历jQuery对象集合,为每个匹配的元素执行一个函数 $(selector).each(function(index, element){
// 参数一表示当前元素在所有匹配元素中的索引号
// 参数二表示当前元素(DOM对象) }); $.each(object, function(k, v) {});
3.2.3 多库共存(了解)
此处多库共存指的是:jQuery占用了$ 和jQuery这两个变量。当在同一个页面中引用了jQuery这个js库,
并且引用的其他库(或者其他版本的jQuery库)中也用到了$或者jQuery这两个变量,那么,
要保证每个库都能正常使用,这时候就有了多库共存的问题。 // 模拟另外的库使用了 $ 这个变量
// 此时,就与jQuery库产生了冲突
var $ = { name : "itecast" }; 解决方式:
$.noConflict(); 让jQuery释放对$的控制权,让其他库能够使用$符号,达到多库共存的目的。此后,只能使用jQuery来调用jQuery提供的方法
3.2.4 jQuery插件机制
jQuery这个js库,虽然功能强大,但也不是面面俱到包含所有的功能。
jQuery是通过插件的方式,来扩展它的功能:
当你需要某个插件的时候,你可以"安装"到jQuery上面,然后,使用。
当你不再需要这个插件,那你就可以从jQuery上"卸载"它。
(联想:手机软件,安装的app就好比插件,用的时候安装上,不用的时候卸载掉)
3.2.5 使用第三方插件
- 1 jQuery.color.js 插件
animate()自定义动画:不支持背景的动画效果 使用步骤:
1. 引入jQuery文件
2. 引入插件
3. 使用插件
- 2 jQueryUI 插件
使用场景:网站的管理后台 jQueryUI专指由jQuery官方维护的UI(用户接口)方向的插件。
官方API:http://api.jqueryui.com/category/all/
其他教程:http://www.runoob.com/jqueryui/jqueryui-intro.html 基本使用:
1. 引入jQueryUI的样式文件
2. 引入jQuery
3. 引入jQueryUI的js文件
4. 使用jQueryUI功能
3.2.6 制作插件
如何创建jQuery插件:
http://learn.jquery.com/plugins/basic-plugin-creation/ 全局jQuery函数扩展方法
$.pluginName = function() {};
$.pluginName(); jQuery对象扩展方法
$.fn.pluginName = function() {};
$(selector).pluginName();
JQuery笔记汇总的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 最全的jQuery知识汇总
本帖最后由 断天涯大虾 于 2016-12-26 10:22 编辑<ignore_js_op> jQuery是什么? jQuery是javascript编写一个可重用的JavaScript ...
- jquery笔记之属性选择器 查找以某种条件开头的页面元素
jquery笔记之属性选择器 查找以某种条件开头的页面元素 转载:http://www.blogbus.com/amyqiong-logs/78340326.html $("div[id]& ...
- MySQL笔记汇总
[目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...
- NGUI学习笔记汇总
NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...
- 读书笔记汇总 --- 用Python写网络爬虫
本系列记录并分享:学习利用Python写网络爬虫的过程. 书目信息 Link 书名: 用Python写网络爬虫 作者: [澳]理查德 劳森(Richard Lawson) 原版名称: web scra ...
- ST官方翻译的中文应用笔记汇总
ST官方翻译的中文应用笔记汇总 http://www.51hei.com/stm32/3382.html 官方中文AN:AN3116:STM32? 的 ADC 模式及其应用AN1015:用于提高微控制 ...
- Jquery笔记之第二天
Jquery笔记之第二天 jQuery - 获取内容和属性 获得内容 - text().html() 以及 val() <script> $(document).ready(functio ...
- Jquery笔记和ajax笔记
Jquery笔记:jQuery是一个JavaScript函数库,专为事件处理设计 1.jQuery的引入 <script text="type/javascript" src ...
随机推荐
- es6 代码片段理解
代码片段理解: [INCREMENT]: (state, action) => { const { payload: { id } } = action //because payload co ...
- <<面向模式的软件架构2-并发和联网对象模式>>读书笔记
服务访问和配置模式 Wrapper Facade可以将有非对象API提供的函数和数据封装到面向对象的类接口中 就是把底层API再封装一次,让外部不用关心是调用哪个平台的API,不如锁,在不同的平台上可 ...
- Mysql无法创建外键的原因
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1. 两个字段的类型或者大小不严格匹配.例如,如果一个 ...
- day1作业--登录入口
作业概述: 编写一个登录入口,实现如下功能: (1)输入用户名和密码 (2)认证成功后显示欢迎信息 (3)输错三次后锁定 流程图: readme: 1.程序配置文件: 黑名单文件blacklist.t ...
- IIS7.5 伪静态 脚本映射 配置方法
首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为7.0,我们知道,IIS7.0与IIS6.0 核心注意的地方:先要将应用池设置为集成模式,修改OK后,再 ...
- 阿里weex学习入门必备
1.阿里weex学习前景 至于这些东西,可以参照一下链接去看看其作用.... http://share.iclient.ifeng.com/news/sharenews.f?forward=1& ...
- Xxtea加解密
转自:http://www.cnblogs.com/luminji/p/3406407.html 很有意思的一件事情,当我想要找 Xxtea 加解密算法的时候,发现了前同事(likui318)的代码, ...
- Oracle补习班第三天
In every triumph, there's a lot of try. 每个胜利背后都有许多尝试 Oracle管理实例组件 主要组件分为两部分例程,与数据库: 例程分为两部分SGA跟进程: S ...
- type="file" 选择图片后预览
function setImagePreview(avalue) { var docObj = document.getElementById("doc"); var imgObj ...
- 使用Delphi收发GMail的邮件
GMAIL的端口和连接方式比较特殊:SMTP端口为:456POP3端口为:995都采用安全连接(SSL)这些通过Indy组件就可以实现参考代码如下: object IdConnectionInterc ...