jQuery01
来源:互联网 发布:mac cue 分割 wav 编辑:程序博客网 时间:2024/05/21 14:47
jQuery
- jQuery的基本概念。。选择器。。。DOM操作。。动画。。事件及扩展。。
- 学习jQuery的一大堆api(就是方法)
- 方法调用的时候,都带小括号()..
javascript与jQuery对比
- 入口函数:js只能有一个入口函数(window.onload=function(){})(如果写多个,后面的会覆盖前面的)。。jquery可以有多个入口函数,并且不会发生覆盖的情况。
- 代码容错性:js代码容错性差,代码出现错误会影响后面的代码运行。。。而jQuery代码容错性好,会屏蔽错误,并且不会影响后面代码的运行。(找错比较难找,只能打断点)。
- 浏览器兼容性:js兼容性差。。。jQuery对浏览器兼容性做了封装,因此不存在兼容性问题。
- 操作复杂性:js DOM操作复杂,对于一些简单动画效果,实现起来比较麻烦。。。jQuery DOM操作简单,支持隐式迭代,实现动画效果非常简单。
JavaScript是一门编程语言,jquery是用JavaScript实现的一个JavaScript库,目的是简化我们的开发。
jQuery的引入
<script src="jquery-1.14.1.js"></script>
jQuery版本
大版本分类
大版本分为1.x 2.x 3.x
区别:2.x 3.x版本不再支持IE6/7/8
同一版本分类
jQuery每个版本分为压缩版和为压缩版。
jQuery.js是未压缩版。代码可读性高,在开发和学习时使用。方便查看源码。
jQuery.min.js是压缩版本。除去了注释,换行,空格,并将一些变量替换成了a,b,c之类的简单字符。基本没有可读性。(一般都在生产环境下使用,减少流量的使用,增加效率)
这些版本基本上没有什么区别,只是2.3.不兼容IE6/7/8了。如果需要兼容IE6/7/8,可以继续使用1.x版本。
入口函数
对比javascript的入口函数和jQuery的入口函数的执行时机。
- javascript的入口函数要等到页面中所有的资源(图片,文件)加载完成后才开始执行。
- jQuery的入口函数只会等待文档树加载完成就开始执行,并不会等待图片,文件的加载。
有两种写法:
第一种写法:、
$(document).ready(function(){});
第二种写法:
$(function(){});
补充:
===jQuery,就是说能用 的地方,全部可以用jQuery,$只是简写形式。
jQuery对象和DOM对象
使用javascript中的方法获取到页面中的元素的返回对象就是DOM对象。比如使用document.getElement*系列的方法返回的对象就是DOM对象
var btn = document.getElementById(“btnShowDiv”);var divs = document.getElementsByTagName(“div”);
DOM对象只能使用DOM对象的方法和属性。
domObject.innerHTML = “dom对象设置文本”;domObject.style.display= “block”;//dom对象显示对象domObject.onclick = function() {}//dom对象绑定事件
jQuery对象就是使用jQuery的方法获取页面中的元素返回的对象就是jQuery对象。比如使用$()方法返回的对象都是jQuery对象。
$(“div”);//标签选择器返回的jquery对象。$(“#btnShowDiv”);//id选择器返回的jquery对象。
jQuery对象只能使用jQuery对象的方法
var $obj = $(“div”);$obj.html(“jquery对象设置文本的方法”);$obj.show();//jquery对象显示文本$obj.click(function() {});//jquery对象绑定事件
错误的用法:
$(“div”).innerHTML;//jquery对象不能调用dom方法document.getElementById(“btnShowDiv”).show();//dom对象不能调用jquery方法。
jQuery对象转DOM对象
var $li = $(“li”); //第一种方法(推荐使用) $li[0] //第二种方法 $li.get(0) //其实jQuery对象转DOM对象的实质就是取出jQuery对象中封装的DOM对象。
DOM对象转jQuery对象
这个直接用$(domObj)也可以。
var $obj = $(domObj);// $(document).ready(function(){});就是典型的DOM对象转jQuery对象
jQuery选择器(重点)
- js可以通过id或者标签名获取页面中的元素,但是返回的是DOM对象,而且方法很单一,我们学习了jQuery,jQuery给我们提供了更简单的方法获取到页面中的元素。注意:(jQuery选择器返回的是jQuery对象)。
选择器
1.基本选择器
ID选择器:获取指定id的元素
$("#id");
类选择器:获取同一类class的元素
$(".class");
标签选择器:获取同一类标签所有的元素
$("div");
并集选择器:使用逗号分开,只要符合条件之一就可,
$("div,p,li");
交集选择器(标签指定值选择器):注意选择器a和选择器b之间没有空格,class为redClass的div元素,注意区分后代选择器
$("div.redClass");
2.层级选择器
子代选择器:使用>号,获取儿子层级的元素,注意并不会获取孙子层级的元素,
$("ul>li");
后代选择器:使用空格,代表后代选择器,获取ul下的所有li元素,包括孙子等。
$("ul li");
3.过滤选择器
这类选择器都带冒号:;
:eq(index) 获取li元素中选择索引号为2的元素,索引号index从0开始。
$("li:eq(2)").css("color","red");
:odd 获取到的li元素中,选择索引号为奇数的元素
$("li:odd").css("color","red");
:even 获取到li元素中,选择索引号为偶数的元素
$("li:even").css("color","red");
4.筛选选择器(方法)
筛选选择器的功能与过滤选择器有点类似,但是用法不一样,筛选选择器主要是方法。
children(selector) 相当于
$("ul>li")
,子类选择器$("ul").children("li");
find(selector) 相当于
$("ul li")
,后代选择器$("ul").find("li");
siblings(selector) 查找兄弟节点,不包括自己本身。
$("#first").siblings("li");
parent() 查找父亲
$("#first").parent();
eq(index) 相当于
$("li:eq(2)")
,index从0开始
jQuery操作样式
css操作
功能:设置或者修改样式,操作的是style属性
设置单个样式:
$("#one").css("background","gray");//将背景色修改为灰色
设置多个样式:参数是一个对象,对象包含了需要设置的样式名和样式值
$("#one").css({ "background":"red", "width":"400px", "height":"200px"});
获取样式,jQuery对象是一个伪数组(获取样式只会返回第一个元素对应的样式的值)
$("div").css("backgroundColor");
class操作
添加类样式
addClass(name);//name:需要添加的样式类名,注意参数不要带点.$(“div”).addClass(“one”);//例子,给所有的div添加one的样式。
移除所有的样式类
removeClass()//不带参数,移除所有的样式类$(“div”).removeClass();//例子,移除div所有的样式类
移除单个样式类
removeClass(“name”);//name:需要移除的样式类名$(“div”).removeClass(“one”);//例子,移除div中one的样式类名
判断是否有样式类
hasClass(name)//name:用于判断的样式类名,返回值为true false$(“div”).hasClass(“one”);//例子,判断第一个div是否有one的样式类
切换样式类
toggleClass(name);//name:需要切换的样式类名,如果有,移除该样式,如果没有,添加该样式。//例子$(“div”).toggleClass(“one”);
6.经验总结
- 如果操作到的样式非常少,可以考虑css方法
- 如果操作到的样式非常多,那么可以通过class方法来操作,将样式写到一个class类里面。
- 如果考虑到后期维护方便,将css从js中分离出来,那么推荐使用class的方式来操作。
jQuery动画
jQuery提供了三组基本动画,这些动画都是标准的,有规律的效果,jQuery还提供了自定义动画的功能。
1.显示与隐藏
- show();显示
- hide();隐藏
toggle();显示隐藏切换,如果显示状态执行隐藏操作,否则执行显示操作。
show([speed], [callback]);//speed(可选):动画的执行时间1.如果不传,就没有动画效果。2.毫秒值(比如1000),动画在1000毫秒执行完成(推荐)3.固定字符串,slow(200)、normal(400)、fast(600),如果传其他字符串,则默认为normal。//callback(可选):执行完动画后执行的回调函数
2.滑入滑出
- slideDown():滑入
- slideUp():滑出
slidToggle()滑入滑出切换
slideUp(speed, callback);//speed(可选):动画的执行时间1.如果不传,默认为normal,注意区分show/hide。2.毫秒值(比如1000),动画在1000毫秒执行完成(推荐)3.固定字符串,slow(200)、normal(400)、fast(600)//callback(可选):执行完动画后执行的回调函数
3.淡入淡出
- fadeIn():淡入
- fadeOut():淡出
fadeToggle():淡入淡出切换
fadeIn(speed, callback);//speed(可选):动画的执行时间1.如果不传,默认是normal。2.毫秒值(比如1000),动画在1000毫秒执行完成(推荐)3.固定字符串,slow(200)、normal(400)、fast(600)//callback(可选):执行完动画后执行的回调函数
4.动画小结
jQuery给我们提供了三组动画,show/hide、slideDown/slideUp、fadeIn/fadeOut
show/slideDown/fadeIn三个是显示效果、hide/slideUp/fadeOut三个是隐藏效果。
show/hide修改的是元素的height,width,opacity。slide系列方法修改的是元素的height。fade系列方法修改的是元素的opacity。这三种方法修改的这些值,都是带数字的,因为带了数字才能做渐变。
自定义动画(animate)
$(selector).animate(json,[speed],[easing],[callback]); // json:要执行动画的CSS属性,带数字(必选) // speed:执行动画时长(必选,默认normal) //easing:控制动画的效果 //1.swing:摇摆、秋千(默认) //2.linear:匀速 // callback:动画执行完后立即执行的回调函数(可选)
动画队列问题
在同一个元素上执行多个动画,对于这个动画来说,后面的动画会被放到动画队列中,等前面的动画执行完了才会执行。(这时候就会有bug,所以要解决,有个停止动画的方法,)
停止动画
stop(); 停止当前正在执行的动画效果。
stop(clearQueue, jumpToEnd);//第一个参数:是否清除队列(true/false)//第二个参数:是否跳转到最终效果(true/false)
stop();里面也可以指定某一个对象的动画,
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><style>#box { width: 400px; height: 400px; background-color: pink; display: none;}</style><script src="jquery-1.12.4.js"></script><script>$(function () { $("#btn1").click(function () { $("#box").slideDown(4000).slideUp(4000); }); $("#btn2").click(function () { //$("#box").stop(); //stop(clearQueue, jumpToEnd) //是否清除动画队列 true, false //是否跳转到当前动画的最终效果 true, false //$("#box").stop(false, false);//stop() //$("#box").stop(true, false); //$("#box").stop(false, true); $("#box").stop(true, true); });});</script></head><body><input type="button" value="开始动画" id="btn1"><input type="button" value="停止动画" id="btn2"><div id="box"></div></body></html>
jQuery操作DOM节点
1.创建元素
//$(htmlStr) //htmlStr:html格式的字符串 $(“<span>这是一个span元素</span>”);
2.添加元素
添加新建的元素:
//方法一:将jQuery对象添加到调用者内部的最后面。 var $span = $(“<span>这是一个span元素</span>”);$(“div”).append($span);//方法二:参数传字符串,会自动创建成jquery对象$(“div”).append(“<span>这是一个span元素</span>”);
添加已经存在的元素:(就是之前div外面有一个p,相当于把这个p剪切到了div里面)
类似的有:append 、prepend 、after 、before
var $p = $(“p”);$(“div”).append($p);//注意:如果添加的是已经存在的元素,那么会把之前的元素给干掉。(类似于剪切的功能)。
使用html方法创建元素;text方法与DOM对象的方法一样
//设置内容$(“div”).html(“<span>这是一段内容</span>”);//获取内容$(“div”).html()
3.清空元素
empty();清空指定节点的所有元素,自身保留。
$(“div”).empty();//清空div的所有内容(推荐使用,会清除子元素上绑定的内容,源码,事件)
第二种方法:
$(“div”).html(“”);//使用html方法来清空元素,不推荐使用,会造成内存泄漏,绑定的事件不会被清除。
4.删除元素
remove(); 相比于empty,自身也删除
$("div").remove();
5.克隆元素
- 作用:复制匹配的元素
深度复制就是包括里面绑定的事件也都复制(参数传true)
// 复制$(selector)所匹配到的元素(深度复制)// 返回值为复制的新元素,和原来的元素没有任何关系了。即修改新元素,不会影响到原来的元素。$(selector).clone();
- jquery01
- jQuery01
- jquery01
- 学习jquery01
- Day05-jQuery01
- Jquery01项目搭建
- 02jquery01-05jquery选择器
- 02jquery01-01回顾之前js
- 02jquery01-03jquery基本使用
- 02jquery01-02解决之前js的问题
- 02jquery01-用3种方式实现下拉菜单
- git使用总结
- JAVA 学习模块十九: 线程间通信
- 2.1.6&2.1.7 Value Object模式和业务代理模式
- 内存管理(1)
- c#-文件打开与保存,打开文件夹
- jQuery01
- php SOAP webservice
- 关于Vue.js数组的变动观测0
- Caffe 源码阅读笔记 [基本模块] Solver
- java设计模式笔记
- HTTP请求报文解析
- Android Volley框架使用详解
- 第十课 VC维,模型选择,贝叶斯统计
- 【Linux4.1.12源码分析】二层报文发送之dev_queue_xmit