前端学习—jQuery

一、JQuery简介

1.JQuery是什么?

jQuery是一个轻量级的、兼容多浏览器的JavaScript库。

jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。

2.jQuery优点

  1. 轻量级JS框架,核心js文件共几十kb,不影响加载速度。
  2. 丰富的DOM选择器,jQuery的选择器用起来很方便。
  3. 支持链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。
  4. 支持事件,样式,动画,可读性高于js代码
  5. 支持Ajax操作,并对Ajax操作进行了简化。
  6. 跨浏览器兼容,基本兼容目前主流浏览器。
  7. 插件扩展丰富,jQuery有丰富的第三方插件。如树形菜单

3.jQuery库内容

  1. 选择器
  2. 筛选器
  3. 样式操作
  4. 文本操作
  5. 属性操作
  6. 文档处理
  7. 事件
  8. 动画效果
  9. 插件
  10. each、data、Ajax

4.jQuery安装使用

jQuery版本

  • 1.x:兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增。
  • 2.x:不兼容IE678,很少有人使用,官方只做BUG维护,功能不再新增。
  • 3.x:不兼容IE678,只支持最新的浏览器。

下载链接jQuery官网,下载本地文件,在HTML中引入,就可以使用jQuery提供给我们的接口。

jQuery中文文档:jQuery AP中文文档

jQuery的两种导入方式

直接下载到本地使用(最常用),从本地中导入

<script src="jquery-3.4.1.js"></script>
// src中写入jquery文件的本地路径

使用文件的网络地址,指定src网络路径

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
// src中写入jquery的网络地址

二、jQuery语法基础

1.jQuery对象

jQuery对象就是通过jQuery包装DOM对象后产生的对象。

jQuery对象是jQuery独有的,如果对象是jQuery对象,就可以使用jQuery中的方法。

jQuery对象和DOM对象的转换

jQuery对象是包装 DOM对象后产生的,但是 jQuery对象无法使用 DOM对象的任何方法,同理 DOM对象也没不能使用 jQuery里的方法。

1.通过DOM对象获取jQuery对象

  • jQuery对象 = $(DOM对象)

2.jQuery对象转换为DOM对象

  • DOM对象 = jQuery[0]
var domObj = document.getElementById('d1')
// 获取jQuery对象
jqueryObj = $(domObj)

// 获取DOM对象
domObj = jqueryObj[0]

2.jQuery语法

jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。

基础语法是:$(selector).action()

  • 美元符号定义 jQuery
  • 选择符(selector)“查询”和“查找” HTML 元素
  • jQuery 的 action() 执行对元素的操作
$(this).hide() // 隐藏当前元素
$("p").hide() // 隐藏所有段落
$(".test").hide() // 隐藏所有 class="test" 的所有元素

三、jQuery选择器

1.jQuery选择器

基本选择器

jQuery 使用 CSS 选择器来选取 HTML 元素。

标签选择器

$("tagName") //选取标签名为某某的所有元素。

id选择器

$("#demo") //选取所有 id="demo" 的标签。

class选择器

$(".className") //获取所有类名有className的标签

配合使用

$("div.c1")  // 找到有c1 class类的div标签

组合选择器

$("#id, .className, tagName")

层级选择器

x和y可以为任意选择器

$("x y"); // x的所有后代y(子子孙孙)
$("x > y"); // x的所有儿子y(儿子)
$("x + y"); // 找到所有紧挨在x后面的y
$("x ~ y"); // x之后所有的兄弟y

属性选择器

jQuery 使用 XPath 表达式来选择带有给定属性的元素。

$("[Attribute]") //选取所有带有 Attribute 属性的元素。
$("[Attribute = value]") //选取所有带有 Attribute 值等于 value 的元素。
$("[Attribute != value]") //选取所有带有 Attribute 值不等于 Attribute 的元素。
$("[Attribute$ = '.jpg']") //选取所有 Attribute 值以 ".jpg" 结尾的元素。

属性选择器多用于input标签

<input type="checkbox">
$("input[type='checkbox']");// 取到checkbox类型的input标签

2.jQuery筛选器

用来对选择器选中的标签进行筛选的条件;

语法结构:$(selector:condition);

基本筛选器

筛选条件:

:first // 第一个
:last // 最后一个
:eq(index)// 索引等于index的那个元素
:even // 匹配所有索引值为偶数的元素,从 0 开始计数
:odd // 匹配所有索引值为奇数的元素,从 0 开始计数
:gt(index)// 匹配所有大于给定索引值的元素
:lt(index)// 匹配所有小于给定索引值的元素
:not(元素选择器)// 移除所有满足not条件的标签
:has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)

使用实例:

$("div:has(h1)") // 找到所有后代中有h1标签的div标签,意思是首先找到所有div标签,把这些div标签的后代中有h1的div标签筛选出来
$("div:has(.c1)") // 找到所有后代中有c1样式类(类属性class='c1')的div标签
$("li:not(.c1)") // 找到所有不包含c1样式类的li标签
$("li:not(:has(a))") // 找到所有后代中不含a标签的li标签

表单筛选器

针对form表单进行筛选的条件。

对表单对象type筛选:

:text 
:password
// 还有file、radio、checkbox、submit、button、reset等等

实例:

$(":checkbox")  // 找到所有的checkbox

对表单对象属性筛选:

:enabled //可以正常使用的标签
:disabled //标签有不可用的属性
:checked //单选和多选框中有默认选择项的标签
:selected //下拉选框中有默认选择项的标签

实例:

$("input:enabled")  // 找到可用的input标签

3.jQuery筛选器方法

经过选择器或者筛选器选择出来的都是对象,而筛选器方法其实就是通过对象来调用一个进一步过滤作用的方法。

注意是写在对象后面的方法,需要加括号,不再是写在选择器里面的了。

基本筛选方法

等效于基本筛选器效果,只不过筛选器写在选择器里面,而筛选方法在表达式后面调用。

.first() // 获取匹配的第一个元素
.last() // 获取匹配的最后一个元素
.not() // 从匹配元素的集合中删除与指定表达式匹配的元素
.has() // 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
.eq() // 索引值等于指定值的元素

向前向后筛选元素

向前和向后筛选都是针对同一级别的元素而言

向后筛选

$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#i2") #直到找到id为i2的标签就结束查找,不包含它

向前筛选

$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#i2")

查找父级元素

$("#id").parent()
$("#id").parents()  // 查找当前元素的所有的父辈元素(爷爷辈、祖先辈都找到)
$("#id").parentsUntil('body') // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止,这里直到body标签,不包含body标签,基本选择器都可以放到这里面使用。

查找儿子元素

$("#id").children();// 儿子们

查找兄弟元素

$("#id").siblings();// 兄弟们,不包含自己,.siblings('#id'),可以在添加选择器进行进一步筛选

find和filter方法

find方法:

查找所有后代中所有符合指定表达式的元素。找到的是find中的元素

$("div").find("p") //找到所有div后代中的p标签
等价于 $("div p")

filter方法:

筛选,查找所有满足filter中条件的元素。找到的是$(选择器)中满足条件的元素。用逗号分隔多个表达式。

$("div").filter(".c1")  // 从所有的div标签中过滤出有class='c1'属性的div
等价于 $("div.c1")

注意:find和filter的区别,一个是找后代,一个是筛选已找到的元素。

四、jQuery操作DOM

1.jQuery操作标签样式

类名操作

通过添加或删除样式来修改元素的CSS样式

addClass(类名); // 添加指定的CSS类名。
removeClass(类名); // 移除指定的CSS类名。
hasClass(类名); // 判断样式存不存在
toggleClass(类名); // 切换CSS类名,如果有就移除,如果没有就添加。

样式操作

jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。

语法:$(选择器).css(Attribute,value);

使用实例!

$("p").css("background-color","red"); //把所有 p 元素的背景颜色更改为红色:

jQuery操作标签位置

offset() 方法

offset() 方法返回或设置匹配元素相对于文档的偏移(位置)。

  • 返回第一个匹配元素的偏移坐标。

该方法返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效。

//语法
$(selector).offset()
  • 设置偏移坐标

设置所有个匹配元素的偏移位置

//语法
$(selector).offset(value)
value 为自定义对象 值对{top:offset,left:offset}
//实例
$('.c1').offset({top:50,left:50}); //修改.c1标签的位置
  • 使用函数来设置所有匹配元素的偏移坐标
//语法
$(selector).offset(function(index,oldoffset))

参数为函数:

function(index,oldoffset)
// index - 可选。接受选择器的 index 位置
// oldvalue - 可选。接受选择器的当前坐标。

position()方法

position() 方法返回匹配元素相对于父元素的位置(偏移)。

该方法返回的对象包含两个整型属性:top 和 left,以像素计。

此方法只对可见元素有效。

语法

$(selector).position()

实例

$(".btn1").click(function(){
  x=$("p").position();
  $("#span1").text(x.left);
  $("#span2").text(x.top);
});

scrollTop和scrollLeft方法

获取滚轮滚动位置

$(window).scrollTop();  //获取滚轮向下移动的距离
$(window).scrollLeft();  //获取滚轮向左移动的距离

设置元素滚动位置

$(selector).scrollTop(position) //设置元素向下偏移
$(selector).scrollLeft(position) //设置元素向左偏移

offset()和position()的区别

offset()是相对检索元素相对于文档中的偏移位置;

position()事项对于距离最近的具有位置属性(position:relative或absolute)的父级元素距离,如果找不到则返回相对于浏览器窗口的距离。

jQuery标签尺寸

通过jQuery的一些方法获取标签盒子模型的属性,以及修改盒子模型。

width() //方法设置或返回元素内容的宽度(不包括内边距、边框或外边距)。
height() //方法设置或返回元素内容的高度(不包括内边距、边框或外边距)。
innerWidth() //方法返回元素的宽度(包括内边距,两个padding)。
innerHeight() //方法返回元素的高度(包括内边距,两个padding)。
outerWidth() //方法返回元素的宽度(包括内边距和边框,padding和border)
outerHeight() //方法返回元素的高度(包括内边距和边框)。

2.jQuery操作文本内容和属性

通过jquery方法获取标签的文本内容和属性值。

jQuery文本操作

1.获取标签HTML文本内容,识别标签

jquery对象.html();  // 取得匹配元素的html内容,包含标签
jquery对象.html(val);  // 设置所有匹配元素的html内容,识别标签,并修改html内容为val

使用实例

$("#d1").html("<a href='www.luffycity.com'>路飞学成</a>");

2.获取标签text文本内容,不识别标签

jquery对象.text();  // 取得所有匹配元素的内容,只有文本内容,没有标签
jquery对象.text(val);  // 设置所有匹配元素的内容,不识别标签,将标签作为文本插入进去

使用实例

$("#d1").text("<a href='www.luffycity.com'>路飞学成</a>");

jQuery标签的值操作

jQuery val()方法用于获取标签的值,一般用于input标签和select标签中获取值。

  • 注意这里说的值,是自带value属性的标签中value属性对应的值
jquery对象.val();  // 取得第一个匹配元素的当前值
jquery对象.val(val);  // 设置所有匹配元素的值
jquery对象.val([val1, val2]);  // 设置多选的checkbox、多选select的值

使用for循环获取所有匹配对象的值

for (var i=0;i<array.length;i++){console.log(array.eq(i).val())

使用实例

<!--设置多选框-->
<input type="checkbox" value="basketball" name="hobby">篮球
<input type="checkbox" value="football" name="hobby">足球

<!--设置多选框-->
<input type="radio" value="1" name="sex">男
<input type="radio" value="2" name="sex">女

<!--设置下拉选择框-->
<select multiple id="s1">
    <option value="1">北京</option>
    <option value="2">上海</option>
    <option value="3">深圳</option>
</select>

查看选中的值

// 获取多选框选中值
$("input[name='sex']:checked").val()
// 获取单选框选中值
$("input[name='hobby']:checked").val()
// 获取下拉框选中值
$("#s1:selected").val()

修改选中项和选中项的值

// 设置单选框哪个被选中 
$("input[name=sex]").val(['1']); //注意使用数组,值需要与标签中的值对应才生效 
// 修改单选框被选中标签的值
$("input[name=hobby]:checked").val('3');

// 设置多选框选中哪些项
$("input[name=hobby]").val(['football']);
$("input[name='hobby']").val(['basketball', 'football']);
// 设置下拉框的值
$("#s1").val(["1", "2","3"])

自动验证登录实例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>文本操作之登录验证</title>
  <style>
    .error {
      color: red;
    }
  </style>
</head>
<body>

<form action="">
  <div>
    <label for="input-name">用户名</label>
    <input type="text" id="input-name" name="name">
    <span class="error"></span>
  </div>
  <div>
    <label for="input-password">密码</label>
    <input type="password" id="input-password" name="password">
    <span class="error"></span>
  </div>
  <div>
    <input type="button" id="btn" value="提交">
  </div>
</form>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
  $("#btn").click(function () {
    var username = $("#input-name").val();
    var password = $("#input-password").val();

    if (username.length === 0) {
      $("#input-name").siblings(".error").text("用户名不能为空");
    }
    if (password.length === 0) {
      $("#input-password").siblings(".error").text("密码不能为空");
    }
  })
</script>
</body>
</html>

jQuery属性操作

jQuery attr() 方法

jQuery attr() 方法用于获取元素中属性值,也用于设置/改变属性值。

一般用于标签自带属性或自定义属性操作

获取元素的属性值
jquery对象.attr(attrName);  // 返回第一个匹配元素的属性值,返回对应值/undefined
修改/设置元素的属性值
attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
attr({attribute1: value1, attribute2:value2})// 为所有匹配元素设置多个属性值
removeAttr()// 从每一个匹配的元素中删除一个属性

prop()方法

一般用于input标签checkbox和radio以及select标签中自带属性的操作。

1.获取元素属性值
prop(attrName);  // 获取某个属性值,返回true/false

2.设置input标签是否被选中
prop('checked',true) 

注意:在1.x和2.x版本中的jquery使用attr对checkbox进行赋值会出bug,3.x版本中没有此问题,所以为了兼容性,在处理checkbox和radio属性时,尽量使用prop,不要用attr。

prop和attr的却别

attr全称attribute(属性) ;prop全称property(属性);

虽然都是属性,但他们所指的属性并不相同,attr所指的属性是HTML标签属性,而prop所指的是DOM对象属性,可以认为attr是显式的,而prop是隐式的。

举个例子

<input type="checkbox" id="i1" value="1">  针对第一种写法的区别

// 获取属性
$("#i1").attr("checked")  // undefined
$("#i1").prop("checked")  // false

可以看到attr获取一个标签内没有的东西会得到undefined,而prop获取的是这个DOM对象的属性,因此checked为false。

<input type="checkbox" checked id="i1" value="1"> 针对第二种写法的区别

// 获取属性
$("#i1").attr("checked")   // checked
$("#i1").prop("checked")  // true

通过实例可以看到attr的局限性,它的作用范围只限于HTML标签内有没有写这个属性,如果写了获取对应的值,如果没有写,则会获得undifined。

而prop获取的是这个DOM对象的属性,也可以理解为这个dom对象的状态,设置了返回true,没有设置返回false。

小结

  1. 对于标签上有的能看到的属性和自定义属性都用attr
  2. 对于返回布尔值的比如checkbox、radio和option的是否被选中或者设置其被选中与取消选中

3.jQuery添加和删除元素

添加元素

  • 添加到指定元素内部的结尾
$(A).append(B)// 把B追加到A,A和B都是选择器
$(A).appendTo(B)// 把A追加到B
  • 添加到指定元素内部的开始
$(A).prepend(B)// 把B前置到A
$(A).prependTo(B)// 把A前置到B
  • 添加到指定元素同级的前面
$(A).after(B)// 把B放到A的后面
$(A).insertAfter(B)// 把A放到B的后面
  • 添加到指定元素同级的后面
$(A).before(B)// 把B放到A的前面
$(A).insertBefore(B)// 把A放到B的前面

移除和清空元素

  • jQuery empty() 方法删除被选元素的子元素。
object.empty()// 清空匹配的元素中所有的内容,包括文本和标签,保留自身
  • jQuery remove() 方法删除被选元素及其子元素。
object.remove()// 从DOM中删除所有匹配的元素。

jQuery remove() 方法也可接受一个参数,允许您对被删元素进行过滤。

//例子删除 class="italic" 的所有 <p> 元素
$("p").remove(".italic");

替换和克隆

替换方法

selector1.replaceWith(selector2) //用2替换1
selector1.replaceAll(selector2)  //用1替换2,和上述方法想法。

克隆方法

object.clone()  // 复制一个object对象
参数设置为true,带事件克隆
object.clone(true)

克隆使用实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
// 设置按钮        
<button class="btn">屠龙宝刀,点击就送</button>

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<script>
	// 为button设置事件,复制自身,带事件
    $('.btn').click(function () {
        var btnClone = $(this).clone(true); //
        $(this).after(btnClone);
    })

</script>
</body>
</html>

五、jQuery事件event

jQuery 事件处理方法是 jQuery 中的核心函数。

事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。术语由事件“触发”(或“激发”)经常会被使用。

定义触发事件写法

$("p").click(function(){
    // 动作触发后执行的代码!!
});

1.jQuery常用事件函数

Event 函数 绑定函数至事件
$(document).ready(function) 将函数绑定到文档的就绪事件(当文档完成加载时)= DOM中的onload
$(selector).click(function) 触发或将函数绑定到被选元素的点击事件
$(selector).dblclick(function) 触发或将函数绑定到被选元素的双击事件
$(selector).focus(function) 触发或将函数绑定到被选元素的获得焦点事件
$(selector).blur(function) 失去焦点是触发的事件
$(selector).hover(function) 捕捉鼠标进入标签和离开标签,看后面对hover的详解
$(selector).change(function) 内容发生变化,input,select等
$(selector).keyup(function) 捕捉键盘按键抬起事件
$(selector).keydown(function) 捕捉键盘按下,按住不放一直触发
$(selector).mouseenter(function) 捕捉鼠标进入标签事件,不识别子标签
$(selector).mouseover(function) 捕捉鼠标进入标签事件,识别子标签
$(selector).mouseout(function) 事件捕捉鼠标离开标签事件
$(selector).on('input',function) 输入框内容实时监测变化触发事件

mouseover 和 mouseenter的区别是:

  • mouseover事件是如果该标签有子标签,那么移动到该标签或者移动到子标签时会连续触发;
  • mouseenter事件不管有没有子标签都只触发一次,表示鼠标进入这个对象;

hover事件:

原生DOM中没有hover事件,jQuery中的hover事件是封装了mouseenter和mouseout两个事件,设置事件时,需要设置两个对应动作,如果只设置了一个,则只会触发mouseenter事件。

hover
	对象.hover(
		function(){}, // 设置鼠标进入动作
		function(){}  // 设置鼠标离开动作
	)

keyup()和keydown()事件

keydown和keyup事件(键盘按键按下和抬起的事件,还有一些其他的key事件)

获取键盘按下的键值:

$(window).keyup(function(ev){
	ev.keyCode;  ev为事件对象,keyCode是获取用户按下了哪个键,数字表示
})

注意keyup和keydown绑定事件是通过window对象来绑定。

2.jQuery绑定和移除事件

事件绑定两种方式

方法一

tag_object.event(function(){执行代码})

方法二

tag_object.on('events' [,selector],function(){执行代码})
  • events: 事件
  • selector: 选择器(可选的)
  • function: 事件处理函数

注意:input事件只能用第二种方式绑定

jQuery移除事件(不常用)

off()方法可以移除用 on绑定的事件处理程序

tag_object.off('events' [, selector ][,function(){}])
  • events: 事件
  • selector: 选择器(可选的)
  • function: 事件处理函数
$("li").off("click") // 移除li标签的点击事件

3.jQuery冒泡事件和事件委托

冒泡事件现象

事件冒泡

在js中,为父级,点击子元素也会触发所有设置了事件的父级元素的事件,这种现象称为事件冒泡。

现象实例

<head>
    <meta charset="UTF-8">
    <title>事件冒泡</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: green;
        }
    </style>
</head>
<body>
<div>
    <button id="b1">点我</button>
</div>

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
    // $("#b1").click(function (e) {
    //     alert('子标签');
    // });

    $("div").on('click','#b1',function (e) {
        alert('父标签');
    });

阻止事件冒泡

常见阻止表单提交等,如果input标签里面的值为空就阻止它提交,就可以使用这两种方法:

  1. return false;
  2. e.stopPropagation();

事件委托

事件委托是通过事件冒泡的原理,将点击子标签触发的事件,委托给父级标签,从而达到为后续的子标签自动绑定事件的假象。

注意理解:

  1. 事件委托的事件本质是绑定在父级标签中
  2. 点击子标签触发了事件,并不是触发的子标签自身的事件,而是父级标签的事件
$("parent").on("events", "son_selector", function () { 
	//事件执行代码
})
// son_selector是个选择器,paretn是父级标签选择器,选择的是父级标签,
// 意思就是将子标签(子子孙孙)的事件委托给了父级标签
// 注意一点,你console.log(this);你会发现this还是触发事件的那个子标签,这个记住昂

使用实例!

$("table").on("click", ".delete", function () { 
	//事件执行代码
})

4.jQuery页面载入事件

当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。

这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。

为什么使用页面载入

之前学习js时遇到过一个问题,如果我们将js操作标签的代码放在head标签中,标签的定义写在后面的body标签中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    //head中绑定事件
	<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js">
        $('.c1').css('background-color','red')
    </script>
</head>
<body>
//body中定义标签
<div class="c1"></div>
</body>
</html>

这样运行出现一个问题,我们加载页面是从上到下的,当我们加载到js代码时,我们找的c1类标签还不存在,导致js代码的样式改变没有起作用。

DOM中的页面加载事件

window.onload(function(){
	//页面加载完执行的事件
})

DOM页面加载事件的弊端,window.onload函数存在覆盖现象,也就是说一个html中只能存在一个页面加载事件。后面的onload函数会覆盖前面的。

jQuery中页面加载事件

第一种写法

$(document).ready(function(){
// 这里写你的JS代码...
})

写法二:

$(function(){
// 这里写你的代码
})

注意和DOM中的区别:

  • DOM中是操作window对象中的onload方法,而jQuery中是操作document的jQuery对象的ready方法
  • window.onload有覆盖现象,必须等待图片加载完才调用
  • jQuery的ready函数没有覆盖现象,文档加载完就可以调用(推荐使用)

六、jQuery效果和补充

1.jQuery动画效果

jQuery hide() 和 show()

使用 hide() 和 show() 方法来隐藏和显示 HTML 元素

  • 可选的 speed 参数规定隐藏/显示的速度,可以取以下值:"slow"、"fast" 或毫秒。
  • 可选的 callback 参数是隐藏或显示完成后所执行的函数名称。
// 语法:
$(selector).hide(speed,callback); 
$(selector).show(speed,callback);

使用实例!

$("#hide").click(function(){
  $("p").hide();
});

jQuery toggle()

使用 toggle() 方法来切换 hide() 和 show() 方法。显示被隐藏的元素,并隐藏已显示的元素。

语法:
$(selector).toggle(speed,callback);
  • 可选的 speed 参数规定隐藏/显示的速度,可以取以下值:"slow"、"fast" 或毫秒。
  • 可选的 callback 参数是 toggle() 方法完成后所执行的函数名称。

jQuery Fading 方法

  • jQuery fadeIn() 淡入已隐藏的元素。
  • jQuery fadeOut() 方法用于淡出可见元素。
  • jQuery fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。
  • jQuery fadeTo() 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)。
$(selector).fadeIn(speed,callback);
$(selector).fadeOut(speed,callback);
$(selector).fadeToggle(speed,callback);
$(selector).fadeTo(speed,opacity,callback);

参数:

  • 可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
  • 可选的 callback 参数是 fading 完成后所执行的函数名称。

jQuery 滑动方法

  • jQuery slideDown() 方法用于向下滑动元素。
  • jQuery slideUp() 方法用于向上滑动元素。
  • jQuery slideToggle() 方法可以在 slideDown() 与 slideUp() 方法之间进行切换。
$(selector).slideDown(speed,callback);
$(selector).slideUp(speed,callback);
$(selector).slideToggle(speed,callback);

实例:

$("#flip").click(function(){
  $("#panel").slideToggle();
});

jQuery 动画 - animate() 方法

jQuery animate() 方法用于创建自定义动画。

$(selector).animate({params},speed,callback);

参数:

  • 必需的 params 参数定义形成动画的 CSS 属性。
  • 可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
  • 可选的 callback 参数是动画完成后所执行的函数名称。

实例:

$("button").click(function(){
  $("div").animate({left:'250px'});
}); 

提示:

可以用 animate() 方法来操作所有 CSS 属性,但是当使用 animate() 时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,等等。

2.补充方法

jQuery.each()方法

一个通用的迭代函数,用来无缝迭代对象和数组。

数组和类似数组的对象通过一个长度属性(如一个函数的参数对象)来迭代数字索引,从0到length - 1。其他对象通过其属性名进行迭代。

jQuery.each(collection, callback(indexInArray, valueOfElement))

使用实例!

li =[10,20,30,40]
$.each(li,function(i, v){
  console.log(i, v);//index是索引,ele是每次循环的具体元素。
})

selector.each()方法

遍历一个jQuery对象,为每个匹配元素执行一个函数。

selector.each(function(k,v){})  // 其中k是索引,v是DOM对象

.each()方法用来迭代jQuery对象中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数)。

由于回调函数是在当前DOM元素为上下文的语境中触发的,所以关键字this总是指向这个元素。

// 为每一个li标签添加foo
$("li").each(function(){
  $(this).addClass("c1");
});

注意:

jQuery的方法返回一个jQuery对象,遍历jQuery集合中的元素 - 被称为隐式迭代的过程。也就是不需要显示的循环.each方法:

$("li").addClass("c1");  // 对所有标签做统一操作

终止each循环

在each方法中,遍历执行的是function函数,所以终止循环需要通过return实现。

return false; //终止循环
return; //终止当次循环

data方法

使用:在匹配的元素集合中的所有元素上存储任意相关数据 或 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值。

任意jQuery对象都有data方法,可以保存任意值,可以用来代替全局变量

data设置值

语法:

jquery对象.data(key, value)

在匹配的元素上存储任意相关数据。

$("div").data("k",100);//给所有div标签都保存一个名为k,值为100

data获取值

jquery对象.data(key); //取值,没有的话返回undefined

描述: 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值—通过 .data(name, value)HTML5 data-*属性设置。

$("div").data("k");//返回第一个div标签中保存的"k"的值

removeData(key)方法

移除存放在元素上的数据,不加key参数表示移除所有保存的数据。

$("div").removeData("k");  //移除元素上存放k对应的数据

3.jQuery插件(了解)

给jQuery扩展方法

jQuery.extend(object)

jQuery的命名空间下添加新的功能。多用于插件开发者向 jQuery 中添加新函数时使用。

实例!

<script>
jQuery.extend({ //$.extend({})
  min:function(a, b){return a < b ? a : b;}, //自定义了一个min和max方法,min和max作为键,值是一个function
});
jQuery.min(2,3);// => 2
</script>

给jQuery对象扩展方法

jQuery.fn.extend(object)

一个对象的内容合并到jQuery的原型,以提供新的jQuery实例方法。

<script>
  jQuery.fn.extend({
    check:function(){
      return this.each(function(){this.checked =true;});
    },
    uncheck:function(){
      return this.each(function(){this.checked =false;});
    }
  });
// jQuery对象可以使用新添加的check()方法了。
$("input[type='checkbox']").check();
</script>
posted @ 2019-05-13 10:30  ryxiong728  阅读(187)  评论(0编辑  收藏  举报