热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JQuery笔记汇总

注意:所有能够执行动画的属性必须只有一个数字类型的值。比如:要改变字体大小,要使用:fontSize(font-size),不要使用:font自定义动画ani

注意:所有能够执行动画的属性必须只有一个数字类型的值。
比如:要改变字体大小,要使用: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();

推荐阅读
author-avatar
xiejiahui62272
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有