JQuery

JQuery
一.Hello JQuery
JQuery是一个javascript的框架,是对jvascript的一种封装。通过JQuery可以非常方便的操作html的元素
1.jquery.min.js
<script src="http://how2j.cn/study/jquery.min.js"></script>
要使用Jquery需要导入一个第三方的javascript库 jquery.min.js
2.理解(function(){ }) //文档完全加载完后运行的jQuery代码 表示文档加载,由();和function(){ }两部分构成,合起来就是 (function(){ }); 这是为了防止文档在完全加载(就绪)之前运行jQuery代码。也就是说,写在这里的JQuery代码都是文档加载好之后的,就不会有获取一个还没有加载好的图片这种问题了, 另一种写法:(document).ready(function(){ });也由两部分组成(document).ready();和function(){} 3.通过id获取元素 JQuery通过("#id")获取 例 document.write( ("#d") ); 注意:通过 document.getElementById获取到的是DOM的元素节点,而通过(#id)获取到的是一个JQuery对象
4.增加监听器
("#b1").click(function(){alert("点击了按钮");}); //JQuery增加click事件的监听 两部分组成("#b1").click();和function(){alert("点击了按钮");}
b1按钮的点击事件 弹出对话框的函数
5.隐藏与显示
("#d").hide();("#d").show();
通过$("#d")拿到div对象后,直接调用hide()和show()方法,即可实现隐藏和显示。

二.常见方法
1.取值 通过JQuery对象的val()方法取值
("#input1").val() 相当于 document.getElementById("input1").value; 2.获取元素内容,如果有子元素,保留标签("#d1").html() 通过html()获取元素内容,如果有子元素,保留标签
3.获取元素内容,如果有子元素,不包含元素标签
$("#d1").text() 通过text()获取元素内容,如果有子元素,不包含标签

三.CSS
1.增加class
通过addClass()增加一个样式中的class
("#d").addClass("pink"); .pink{} 2.删除class 通过removeClass() 删除一个样式中的class("#d").removeClass("pink");
3.切换class
通过toggleClass() 切换一个样式中的class 切换指存在就删除,不存在就添加
("#d").toggleClass("pink"); 4.通过css函数,直接设置样式("#d1").css("background-color","pink"); 设置单一样式
$("#d2").css({"background-color":"pink","color":"green"}); 设置多种样式
参数是{}包含的属性值对,属性值对之间用逗号(,)分割。属性值之间用冒号(:)分割,属性和值都需要用引号“”

四.选择器
1.元素
("tagName") 根据标签名 选择所有该标签的元素("div").addClass("pink");
2.id
("#id") 根据id选择元素,id应该是唯一的,如果id重复,则只会选择第一个("#d1").addClass("pink");
3.类
(".className") 根据 class 选择元素(".d").addClass("pink");
4.层级
("selector1 selector2") 选择selector1下的selector2元素("div#d3 span").addClass("pink");
5.最先最后
(selector:first) 满足选择器条件的第一个元素(selector:last) 满足选择器条件的最后一个元素
("div:first").addClass("pink");("div:last").addClass("pink");
6.奇偶
(selector:odd) 满足选择器条件的奇数元素(selector:even) 满足选择器条件的偶数元素
(因为是基零的,所以第一排的下标其实是0(是偶数))
("div:odd").toggleClass("pink");("div:even").toggleClass("green");
7.可见性
(selector:hidden)满足选择器条件的不可见的元素(selector:visible)满足选择器条件的可见的元素
注意:div:visible和div:visible(有空格)是不同的意思
div:visible表示选中个可见的div div :visible(有空格) 表示选中div下可见的元素
("div:visible").hide();("div:hidden").show();
8.属性
(selector[attribute]) 满足选择器条件的有某属性的元素(selector[attribute=value]) 满足选择器条件的属性等于value的元素
(selector[attribute!=value]) 满足选择器条件的属性不等于value的元素(selector[attribute^=value]) 满足选择器条件的属性以value开头的元素
(selector[attribute=value]) 满足选择器条件的属性以value结尾的元素
$(selector[attribute*=value]) 满足选择器条件的属性包含value的元素

("div[id]").toggleClass("border"); 给有id属性的div切换边框("div[id='pink']").toggleClass("border"); 给id=pink的div切换边框
("div[id!='pink']").toggleClass("border"); 给有id!=pink属性的div切换边框("div[id^='p']").toggleClass("border"); 给有id以p开头的div切换边框
("div[id='k']").toggleClass("border"); 给有id以k结尾的div切换边框
$("div[id*='ee']").toggleClass("border"); 给有id包含ee的div切换边框

9.表单对象
表单对象选择器指的是选中form下出现的输入元素
:input 会选择所有的输入元素,不仅仅是input标签开始的那些,还包括textarea,select,button
:button 会选择type=button的input元素和button元素
:radio 会选择单选框
:checkbox会选择复选框
:text 会选择文本框,但不会选择文本域
:submit 会选择提交按钮
:image 会选择图片型提交按钮
:reset会选择重置按钮
(function(){(".b").click(function(){
var value = (this).val();("td[rowspan!=13] "+value).toggle(500); }); });
注意:$("td[rowspan!=13] 后面有一个空格,表示层级选择器,
意思是获取 满足rowspan属性的属性值不为13的td元素下的所有元素
如果没有出错,toggle(500)表示在显示与隐藏之间来回切换,生效时间是500毫秒
submit会把<button>元素选中,因为在一些浏览器中,<button>元素的type默认值是submit,
所以会选中它

10.表单对象元素
:enabled 会选择可用的输入元素 注:输入元素的默认状态都是可用
:disabled会选择不可用的输入元素
:checked会选择被选中的单选框和复选框 注:checked在部分浏览器上(火狐,chrome)也可以选中selected的option
:selected会选择被选中的option元素

11.当前元素
在监听函数中使用(this),即表示触发该事件的组件(function() { ("#b1").click(function(){(this).hide(); }); });

五.筛选器
1.第一个 最后一个 第几个
首先通过 ("div")选择了多个div元素,接下来做进一步的筛选, first()第一个元素,last()最后一个元素,eq(num)第num个元素 注:num基0("div").first().toggleClass("pink"); 切换第1个div背景色
("div").last().toggleClass("pink"); 切换最后1个div背景色("div").eq(4).toggleClass("pink"); 切换第5个div背景色
2.父 祖先
parent() 选取最近的一个父元素
parents() 选取所有的祖先元素
("#currentDiv").parent().toggleClass("b"); 改变parent()的边框("#currentDiv").parents().toggleClass("b"); 改变parents()的边框
3.儿子 后代
children():筛选出儿子元素(紧挨着的子元素)
find(selector):筛选出后代元素 注:find()必须使用参数selector
("#currentDiv").children().toggleClass("b");("#currentDiv").find("div").toggleClass("b");
4.同级
sibings():同级(同胞)元素
$("#currentDiv").siblings().toggleClass("b");

六.属性
1.获取
通过attr()获取一个元素的属性
<h1 id="h" align="center" game="LOL">居中标题</h1>
("#h").attr("align") 获取align属性("#h").attr("game") 获取自定义属性 game
2.修改
通过attr(attr,value)修改属性
("#h").attr("align","right") ; 修改align属性为right 3.删除 通过removeAttr(attr)删除属性("#h").removeAttr("align"); 删除align属性
4.prop与attr的区别
("#c").attr("game") 获取属性值结果为LOL("#c").prop("game") 获取属性值结果为undefined
("#c").attr("checked") 当选中属性时,获取值checked,当未选中属性时,获取值checked("#c").prop("checked") 当选中属性时,获取值true,当未选中属性时,获取值false
<input type="checkbox" id="c" game="LOL" checked="checked">
与prop一样attr也可以用来获取与设置元素的属性。区别在于,对于自定属性和选中属性的处理。
选中属性指的是checked,selected这两种属性。1.对于自定义 属性attr能够获取,prop不能获取
2.对于选中属性:attr只能获取初始值,无论是否变化,prop能够访问变化后的值,并且以true|false的
布尔型返回,所以在访问表单对象属性的时候,应该采用prop而非attr.

七.效果
1.显示 隐藏 切换
显示 隐藏 切换 分别通过show(),hide(),toggle()实现,也可以加上毫秒数,表示延时操作,比如show(2000).
("#d").hide(); 立即隐藏("#d").show(); 立即显示
("#d").toggle(); 立即切换("#d").show(1000); 延时显示
("#d").hide(1000); 延时隐藏("#d").toggle(1000); 延时切换
2.向上滑动 向下滑动 滑动切换
向上滑动 向下滑动 滑动切换 分别通过slideUp(),slideDown(),slideToggle()实现,也可以加上毫秒数,表示延时操作,比如slideUp(2000).
("#d").slideUp(); 向上滑动("#d").slideDown(); 向下滑动
("#d").slideToggle(); 滑动切换("#d").slideUp(2000); 延时向上滑动
("#d").slideDown(2000); 延时向下滑动("#d").slideToggle(2000); 延时滑动切换
3.淡入 淡出 淡入淡出切换 指定淡入程度
淡入 淡出 淡入淡出切换 指定淡入程度 分别通过fadeIn(),fadeOut(),fadeToggle() fadeTo(实现)
也可以加上毫秒数,表示延时操作,比如fadeIn(2000)
fadeTo跟的参数是0-1之间的小数.0表示不淡入,1表示全部淡入
("#d").fadeIn(); 淡出("#d").fadeOut(); 淡入
("#d").fadeToggle(); 淡入淡出切换("#d").fadeIn(2000); 延时淡出
("#d").fadeOut(2000); 延时淡入("#d").fadeToggle(2000); 延时滑淡入淡出切换
$("#d").fadeTo("slow",0.2); fadeTo
4.自定义动画效果
通过animate可以实现动画效果,animate()第一个参数为css样式,animate()第二个参数为延时毫秒
注:默认情况下,html中的元素都是固定的,并且无法改变位置的,为了使用animate()自定义动画动画效果,需要通过css把元素的position设置为relative,absolute或者fixed
div.animate({left:'100px'},2000); 向右移动100px
div.animate({left:'0px',top:'50px',height:'50px'},2000); 向左下移动50px,同时高度变小
5.回调函数
效果方法都提供对回调函数callback()的支持,只需要在调用效果方法的最后一个参数传入一个function,当效果结束的时候,就会调用该function
div.animate({left:'100px'},2000);
div.animate({left:'0px',top:'50px',height:'50px'},2000,function(){
alert("动画演示结束"); });

八.事件
1.加载
页面加载有两种方式表示
第一种:(document).ready(); 第二种:(); 图片加载用load()函数
(document).ready();(function(){ ("#img").load(function(){ }); }); 2.点击 click()表示单击 dblclick()表示双击 注意:空白键和回车键也可以造成click事件,但是只要双击鼠标才能造成dbclick事件("#b").click(function(){}); 单击事件
("#b").dblclick(function(){ }); 双击事件 3.键盘 keydown 表示按下键盘 keypress表示按下键盘 keyup表示键盘弹起 这三者的区别分别表现在发生的先后顺序,获取到的键盘按钮值,已经对输入框的文本取值这三方面。 先后顺序:按照 keydown keypress keyup 顺序发生 键盘按钮值:通过event对象的which属性获取键盘的值, keydown和keyup能获取所有按键,不能识别大小写 keypress不能获取功能键,如F1 SHIFT等,能够识别大小写 文本取值:keydown和keypress: 不能获取最后一个字符 keyup:获取所有字符 例如:敲入ab,发生的先后顺序是keydown,keypress,keyup,,,keydown和keyup取到大写B的ascii码表 66,keypress取到小写b的ascii码表98,keydown和keypress只能取到文本值a,keyup可以取到ab(function(){
("#i").keydown(function(e){ keypress keyup var selector = "keydown"; clearTimeout(clearTimer);("#"+selector+"Action").css("background-color","green");
("#"+selector+"Action").html("顺序: " + (++order ) );("#"+selector+"Key").html(e.which);
("#"+selector+"Value").html((this).val());
clearTimer= setTimeout(clear,4000);
});
4.鼠标
mousedown 表示鼠标按下
mouseup 表示鼠标弹起
mousemove 表示鼠标进入 mouseenter 表示鼠标进入 mouseover表示鼠标进入
mouseleave表示鼠标离开 mouseout表示鼠标离开
进入事件有3个 mousemove mouseenter mouseover
mousemove:当鼠标进入元素,每动一下就会被调用
mouseenter :当鼠标进入元素,调用一下,在其中移动,不调用 ,鼠标经过其子元素不会被调用
mouseover:当鼠标进入元素,调用一下,在其中移动,不调用 , 鼠标经过其子元素会被调用
mouseleave 和 mouseout的区别
mouseleave: 当鼠标经过其子元素不会被调用
mouseout:当鼠标经过其子元素会被调用
("#move").mousemove(function(){}); 5.焦点 focus() 获取焦点 blur() 失去焦点("input").focus(function(){}); 获取了焦点
("input").blur(function(){}); 失去了焦点 6.改变 change() 内容改变 注: 对于文本框,只有当该文本失去焦点的时候,才会触发change事件。("#input1").change(function(){ });
7.提交
submit() 提交form表单时触发的函数
("#form").submit(function(){}); 8.绑定事件 以上所有的事件处理,都可以通过on() 绑定事件来处理("selector").on("event",function);
("#b").on("click",function(){ }); 可对比("#b").click(function(){});
9.触发事件
("selector").trigger("event"); 触发事件,文件加载后之后,就触发dbclick双击事件,而不是通过手动双击("#b").on("dblclick",function(){("#message").html("双击按钮"); });("#b").trigger("dblclick"); });

九.AJAX
1.提交AJAX请求
(function(){("#name").keyup(function(){
.ajax({ url: "http://how2j.cn/study/checkName.jsp", data:{"name":(this).val()},
success: function(result){
("#checkResult").html(result); } }); }); });.ajax采用参数集的方式{param1,param2,param3}不同的参数之间用,隔开
第一个参数 url:表示访问的page页面 //只有第一个参数是必须的,其他参数都是可选
第二个参数data:表示提交的参数
第三个参数success:function(){} 表示服务器成功返回后对应的响应函数
2.使用get方式提交ajax
.get 是.ajax的简化版,专门用于发送GET请求
(function(){("#name").keyup(function(){
.get( "http://how2j.cn/study/checkName.jsp", //访问的页面 {"name":(this).val()}, //提交的数据
function(result){ //响应参数
("#checkResult").html(result); } ); }); }); 3.使用post方式提交ajax.get----> .post 4.最简单的调用ajax的方式 load("#id").load(page,[data]);
id: 用于显示AJAX服务端文本的元素Id
page: 服务端页面
data: 提交的数据,可选。 在本例中,直接在page里加上了参数列表
(function(){("#name").keyup(function(){
var page = "http://how2j.cn/study/checkName.jsp?name="+(this).val();("#checkResult").load(page);
});
});
5.格式化form下的输入数据
serialize(): 格式化form下的输入数据,把输入数据格式化成字符串
var data = $("#form").serialize(); //name=sad&age=sd&mobile=ds
name属性值=输入值&age属性值=输入值&mobile属性值=输入值

十.数组操作
1.遍历
.each 遍历一个数组 第一个参数是数组,第二个参数是回调函数i是下标,n是内容 var a = new Array(1,2,3);.each( a, function(i, n){
document.write( "元素[" + i + "] : " + n + "
" );
})
document.close();
2.去掉重复
.unique() 去掉重复的元素 注意:在执行unique之前,要先调用sort对数组的内容进行排序 var a = new Array(5,2,4,2,3,3,1,4,2,5); a.sort();.unique(a);
3.是否存在.inArray.inArray 返回元素在数组中的位置 ,如果不存在返回-1
$.inArray(9,a) //返回元素9在数组a中的位置

十一.字符串操作
1.去除首尾空白 $.trim() 去除首尾空白

十二.JSON
1.将JSON格式的字符串,转换为JSON对象
var s1= "{"name":"盖伦","hp":616}"
var gareen = $.parseJSON(s1);

十三.对象转换
已使用大量的JQuery对象的方法,比如show()、toggle(),而原生DOM对象不具备这些方法
同样的DOM对象也具备JQuery对象所没有的属性和方法,比如checkd属性
在某些场景下,需要对JQuery对象和DOM节点对象进行互相转换
1.JQuery转DOM
通过get(0)或者[0] 把JQuery对象转为DOM对象
var div= ("#d"); div为JQuery对象 var d = div[0]; d为DOM对象 或 var div=("#d"); div为JQuery对象
var d = div.get(0); d为DOM对象
2.DOM转JQuery
通过() 把DOM对象转为JQuery对象 var div= document.getElementById("d"); div为DOM对象 var d =(div); d为JQuery对象

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,273评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,349评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,709评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,520评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,515评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,158评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,755评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,660评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,203评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,287评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,427评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,122评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,801评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,272评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,393评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,808评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,440评论 2 359

推荐阅读更多精彩内容

  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,181评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,346评论 0 2
  • jQuery模块 选择器、DOM操作、事件、AJAX与动画 匿名函数自执行 作用:解决命名空间与变量污染的问题 总...
    青青玉立阅读 884评论 0 0
  • jQuery笔记总结篇 poetries 已关注 2016.10.20 10:52* 字数 9137 阅读 660...
    小杰的简书阅读 1,798评论 2 32
  • 原文链接 http://blog.poetries.top/2016/10/20/review-jQuery 关注...
    程序员poetry阅读 16,649评论 18 503