jQuery

793 阅读17分钟

1. 基础

1.1 jQuery简介

jQuery 是一个JavaScript函数库。

jQuery 是一个轻量级的"写的少,做的多"的JavaScript库。

jQuery 库包含以下功能:

  • HTML 元素选取
  • HTML 元素操作
  • CSS 操作
  • HTML 事件函数
  • JavaScript 特效和动画
  • HTML DOM 遍历和修改
  • AJAX
  • Utilities

提示: 除此之外,Jquery还提供了大量的插件。

1.2 jQuery优势

(1)轻量级。jQuery非常轻巧,采用UglifyJS压缩后,大小保持在30k左右。

(2)强大的选择器。jQuery允许开发者使用从CSS1到CSS3几乎所有的选择器,以及jQuery独创的高级而复杂的选择器。

(3)出色的DOM封装。

(4)可靠的事件处理机制。

(5)完善的Ajax。

(6)不污染顶级变量。jQuery只建立一个名为jQuery的对象,其所有的函数方法都在这个对象之下。其别名$也可以随时交出控制权,绝对不会污染其他的对象。该特性是jQuery可以与其他JavaScript库共存,在项目放心地引用而不需要考虑到后期可能的冲突。

(7)出色的浏览器兼容性。

(8)链式操作方式。即发生在同一个jQuery对象上的一组动作,可以直接连写而无需重复获取对象。

(9)隐式迭代。当用 jQuery 找到带有 ".myclass" 类的全部元素,然后隐藏它们时,无需循环遍历每一个返回的元素。相反,jQuery 里的方法都被设计成自动操作对象集合,而不是单独的对象,这使得大量的循环结构变得不再必要,从而大幅的减少了代码量。 

(10)行为层与结构层的分离。开发者可以使用 jQuery 选择器选中元素,然后直接给元素添加事件。这种行为层与结构层相分离的思想,可以使  jQuery 开发人员和 HTML 或其他开发人员各司其职,摆脱过去开发冲突或个人单干的开发模。同时,后期维护也非常方便,不需要在 HTML 代码中寻找某些函数和重复修改 HTML 代码。

(11)丰富的插件支持。

(12)完善的文档。

(13)开源。jQuery是一个开源产品,任何人都可以自由地使用并且提出意见。

1.3 jQuery代码编写

 基础语法:$(selector).action(), 美元符号$定义 jQuery,选择符(selector)"查询"和"查找" HTML 元素,

window.onload 与 $(document).ready() 的区别:

执行时机:window.onload 必须等待网页中所有的内容加载完毕后(包括图片)才能执行,$(document).ready 网页中所有DOM结构绘制完毕后就执行,可能DOM元素关联的元素并没有加载完;

编写个数:window.onload 不能同时编写多个;$(document).ready能同时编写多个;

简化写法: window.onload 无; 

window.onload=function(){
    //...
}

$(document).ready

$(document).ready(function(){
    //...
})
可以简写成:
$(function(){
    //...
})

 jQuery 的 action() 执行对元素的操作

$(document).ready(function(){
	alert("Hello World");
});

代码风格:链式操作风格

这是一个导航栏,HTML代码如下:

<div class="box">
	<ul class="menu">
		<li class="level">
			<a href="#none">衬衫</a>
			<ul>
				<li><a href="#">短袖衬衫</a></li>
				<li><a href="#">长袖衬衫</a></li>
				<li><a href="#">短袖T恤</a></li>
				<li><a href="#">长袖T恤</a></li>
			</ul>
		</li>
		<li class="level">
			<a href="#none">卫衣</a>
			<ul>
				<li><a href="#">开襟卫衣</a></li>
				<li><a href="#">套头卫衣</a></li>
				<li><a href="#">运动卫衣</a></li>
				<li><a href="#">童装卫衣</a></li>
			</ul>
		</li>
		<li class="level">
			<a href="#none">裤子</a>
			<ul>
				<li><a href="#">短裤</a></li>
				<li><a href="#">牛仔裤</a></li>
				<li><a href="#">休闲裤</a></li>
				<li><a href="#">免烫卡其裤</a></li>
			</ul>
		</li>
	</ul>
</div>

项目需求是做一个导航栏,单击不同的商品链接,显示相应的内容,同时高亮显示出当前的商品。 选择jQuery来实现这个导航栏效果,如下:

$(".level>a").click(function() {
	$(this).addClass('current').next().show().parent().siblings().children("a").removeClass('current').next().hide();
	return false;
});

这就是jquery强大的链式操作,一行代码就完成了导航栏的功能;

调整一下代码格式:

$(".level>a").click(function() {
	$(this).addClass("current")	//给当前元素添加"current"样式
	.next().show()			//下一个元素显示
	.parent().siblings().children("a").removeClass("current")
					//父元素的同辈元素的子元素<a>移除"current"样式
	.next().hide();			//他们的下一个元素隐藏
	return false;
});

总结3中情况:

(1)对于同一个对象不超过3个操作的,可以直接写成一行;

$("li").show().unbind("click");

(2)对于同一个对象的较多操作,建议每行写一个操作;

$(this).removeClass('mouseout')
	.addClass('mouseover')
	.stop()
	.fadeTo("fast",0.6)
	.fadeTo("fast",1)
	.unbind("click")
	.click(function() {
		//do something
	});

(3)对于多个对象的少量操作,可以每个对象写一行,如果涉及子元素,可以考虑适当地缩进。

$(this)addClass('highlight')
	.children('li').show().end()
.siblings().removeClass('highlight')
	.children('li').hide();

注意:程序块严格采用缩进风格书写,能保证代码清晰易读,风格一致。

1.4  jQuery对象和DOM对象

 (1)DOM对象

DOM(Document Object Model,文档对象模型),每一份DOM都可以表示成一棵树。如下代码:

//省略其他代码
<h3>例子</h3>
<p title="选择你喜欢的水果">你喜欢的水果是?</p>
<ul>
    <li>苹果</li>
    <li>橘子</li>
    <li>菠萝</li>
</ul>
//省略其他代码

初始化效果如图:

把网页元素表示为DOM树:

    在这棵DOM树中,<h3>,<p>,<ul>以及<ul>的3个<li>子节点都是DOM元素的节点。可以通过JavaScript中的getElementByTagName或者getElementById来获取元素子节点。像这样得到的DOM元素就是DOM对象。DOM对象可以使用JavaScript中的方法,示例如下:

var domObj=document.getElementById("id");    //获得DOM对象
var ObiHTML=domObj.innerHTML;                //使用JavaScript中的属性——innerHTML

 (2)jQuery对象

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

jQuery对象是独有的。如果一个对象是jQuery对象,那么就可以使用jQuery里的方法。


目前这个阶段,主要学习如何来使用 jQuery 操作 DOM ,其实就是学习 jQuery 封装好的那些功能方法,这些方法叫做 API(Application Programming Interface 应用程序编程接口)。这些 API 的共同特点是:几乎全都是方法。所以,在使用 jQuery 的 API 时,都是方法调用,也就是说要加小括号 (),小括号里面是相应的参数,参数不同,功能不同。

2. jQuery 选择器


  • 如何获取更改元素的样式

如果想要更改一个样式时,css("样式名","样式值")
如果想要改变多个样式时,css中传入一个对象

案例1:隔行变色

$(function(){    
    $("tr:even").css("background-color","red");    
    $("tr:odd").css("background-color","blue");    
    $("td:even").css("background-color","skyblue")
})

案例2:表单操作

重置input和textarea的默认样式
resize:none;

HTML结构: 
<form action="">        
    <input type="text">        
    <input type="text">        
    <input type="checkbox" class="check">        
    <input type="checkbox" class="check">        
    <input type="checkbox" class="check">        
    <input type="checkbox" class="check">        
    <input type="checkbox" class="check">        
    <input type="checkbox" class="check">        
    <button type="button">点击我</button>        
    <select name="" id="bt1">            
        <option value="">春天</option>            
        <option value="">夏天</option>            
        <option value="">秋天</option>            
        <option value="">冬天</option>        
    </select>
</form>

原生JS书写: 
$(function(){        
    var index=0;        
    var inputs=document.getElementsByTagName('input');        
    $("button").click(function(){            
        for(var n=2;n<inputs.length;n++){                
            if(inputs[n].checked){                    
                index++;                
            }            
        }            
    alert(index+"个被选中了")            
    return index=0;        
    })    
})
jQuery 书写:
$(function(){    
    $("button").click(function(){            //所有的复选框中被选中的元素        
        alert($(".check:checked").length+"个被选中了");    
    })
})

原生JS书写:
$(function(){    
    var select=document.getElementById('bt1');    
    var ops=select.getElementsByTagName('option');    
    bt1.onchange=function(){        
        console.log(ops[this.selectedIndex].innerHTML)    
    }
})
jQuery 书写:
$(function(){    
    $("#bt1").change(function(){        
        console.log($("#bt1 option:selected").html())    
    })
})

案例3:TAB选项卡的实现

HTML:
<ul id="tabNav">
    <li class="active">腾讯</li>
    <li>阿里</li>
    <li>京东</li>
    <li>百度</li></ul>
<div id="wrap">
    <div class="show">腾讯</div>
    <div>阿里</div>
    <div>京东</div>
    <div>百度</div>
</div>

CSS:
<style>
    *{
        padding: 0;
        margin: 0;
    }
    li{
        list-style: none;
    }
    #tabNav{
        overflow: hidden;
  /* 给父级加 overflow: hidden,可以清除子集浮动对父级的影响,也可以让子级超出父级的部分隐藏 */
    }
    #tabNav li{
        width: 75px;
        height: 50px;
        border: 1px solid #ccc;
        float: left;
        line-height: 50px;
        text-align: center;
        cursor: pointer;
    }
    #tabNav .active{
        background-color: red;
    }
    #wrap div{
        width: 306px;
        height: 256px;
        border: 1px solid #ccc;
        font-size: 50px;
        line-height: 256px;
        text-align: center;
        float: left;
        display: none;
    }
    #wrap .show{
        display: block;
        background-color: skyblue;
    }
</style>
JS:
$(function(){
    $("#tabNav li").click(function(){//后代选择器
        var index=$(this).index();
        $("#tabNav li").removeClass("active");
        $(this).addClass("active");
        $("#wrap div").removeClass("show");
        $("#wrap div").eq(index).addClass("show");
    })
})

  • 在 js 编程中,this指向调用时间的元素,this 永远是 js 对象,var index=$(this).index(),index 指的是在其父级中所在的索引值;
  • addClass 给指定的jQuery元素添加类名,保留之前的类名,追加一个新的类名
  • removeClass 移除指定的类名
  • .index() 找到对应元素所在数组中的索引值
  • .eq()集合中的第几个元素
 原生JS写选项卡

window.onload=function(){
        var tabNav=document.getElementById('tabNav');
        var tabNavLis=tabNav.getElementsByTagName('li');
        var wrap=document.getElementById('wrap');
        var wrapDivs=wrap.getElementsByTagName('div');
        for(var n=0;n<tabNavLis.length;n++){
            tabNavLis[n].index=n;
            tabNavLis[n].onclick=function(){
                for(var j=0;j<tabNavLis.length;j++){
                    tabNavLis[j].className="";
                }
                this.className="active";
                for(var j=0;j<wrapDivs.length;j++){
                    for(var i=0;i<wrapDivs.length;i++){
                        wrapDivs[i].className="";
                    }
                    wrapDivs[this.index].className="show";
                }
            }
        }        
}

3. jQuery 中的 DOM 操作

3.1 DOM 操作的分类

一般来说,DOM 操作分为三个方面,即 DOM 核心(DOM Core)、HTML-DOM 和 CSS-DOM.

1. DOM Core

  DOM Core 并不专属于 JavaScript ,任何一种支持 DOM 的程序语言都可以使用它。它的用途并非仅限于处理网页,也可以用来处理任何一种标记语言编写出来的文档,例如 XML。

  JavaScript 中的 getElementById( )、getElementByTagName( )、getAttribute( ) 和 setAttribute( ) 等方法都是 DOM Core 的组成部分。

2. HTML-DOM

在使用 JavaScript 和 DOM 为 HTML 文件 编写脚本时,有许多专属于 HTML-DOM 的属性。HTML-DOM 的出现甚至比 DOM Core 还要早,它提供了一些更简明的记号来描述各种 HTML 元素的属性。

3. CSS-DOM

CSS-DOM 是针对 CSS 的操作。在 JavaScript 中,CSS-DOM 技术的主要作用是获取和设置 style 对象的各种属性。通过改变 style 对象的各种属性,可以使网页呈现出不同的效果。

例如:设置某元素 style 对象字体颜色的方法,

element.style.color="red";

jquery 作为 JavaScript 库,继承并发扬了JavaScript 对DOM 对象的操作的特性,使开发人员能方便地操作 DOM 对象。

3.2 jQuery 中的 DOM 操作

 获取(设置)元素的内容: .html()  .text()  .val() 

$("#user").val();//获取表单的value值
.html()是插入内容,可以解析标签//直接调用方法就是查找里边的内容,会将内部的标签一样获取出来,
.text() 只获取标签中的文字$("#text").text("<span>hellow</span>")
.text()也是插入,不过不可以解析标签

 获取属性,设置属性:.attr({ }) .prop() 

attr 只能取到当前写好在标签中的属性,prop可以拿到没有写在标签中的属性

var x=$("img").attr("src");// .attr("属性名") 获取属性
$("img").attr("src","images/女裤.jpg"); // .attr("属性名","属性值"),更改属性
$("img").attr({"src":"images/女裤.jpg","alt":"对不起,路径出错了"}) // 可以设置多个属性
$("img").removeAttr("alt"); // 移除属性

 案例:全选

<input type="checkbox"><br>    
<input type="checkbox">    
<input type="checkbox">    
<input type="checkbox"><br>
$("input").eq(0).change(function(){
        var x=$(this).prop("checked");
        if(x){
            $("input").prop("checked",true)
        }else{
            $("input").prop("checked",false)
        }
})

类名:.addClass( ) .removeClass( ) .hasClass( ) .toggleClass( )

  案例:box 的显示与隐藏

HTML:
<button>显示/隐藏</button>    
<div class="show contain wrap"></div>
CSS:
div{
    width: 300px;
    height: 300px;
    background-color: chartreuse;
    display: none;
}        
.show{
    display: block;
}

 JS 部分 方法1:

var index=true;
        $("button").click(function(){
            if(index){
                $("div").removeClass("show");
                index=false;
            }else{
                $("div").addClass("show");
                index=true;
            }
        }

方法2:

 var x=$("div").attr("class");            
var arr=x.split(" ");            
for(var n=0;n<arr.length;n++){
    if(arr[n]!="show"){
        $("div").addClass("show");
    }else{
        $("div").removeClass("show");
        break;
    }
}

方法3:

var x=$("div").attr("class");
var arr=x.split(" "); 
for(var n=0;n<arr.length;n++){
    if(arr[n]=="show"){
        $("div").removeClass("show");
        break;
    }else{
        $("div").addClass("show");
    }
}

方法4:

.hasClass( ) 判断元素中是否包含指定的类名,返回一个布尔值,如果包含,返回true,如果不包含,返回false

var x=$("div").hasClass("show");            
if(x){                
    $("div").removeClass("show");            
}else{                
    $("div").addClass("show");            
}

方法5:

.toggleClass( ) 用于类名的切换,自动判断是否含有指定的类名,如果含有,自动将其删除,如果没有,自动将其添加

$("div").toggleClass("show");

元素的尺寸:.width()  .innerWidth()  .outerWidth() 

   // var x=$("#box").css("width"); // 300px string        
// 设置元素宽度的数值 .width()            
// var x=$("#box").width(); // 300 number        
// 设置元素宽度的数值加上 padding, .innerWidth()            
// var x=$("#box").innerWidth(); // 500 number        
// 设置元素宽度的数值加上 padding 和 border,.outerWidth()            
// var x=$("#box").outerWidth(); 520 number        
// 加上数值可以更改宽度和高度,更改的永远是width和height            
// $("#box").width(500)             
// $("#box").innerWidth(700)            
// $("#box").outerWidth(800)

 如何动态创建元素: $("< />").appendTo    .parentTo() 

var li=$("<li />").html("我是动态创建的").css("color","red").addClass("show");
$("#nav").append(li) // append 在元素的末尾添加
$("#nav").prepend(li) // prepend 在元素的开头添加
// appendTo 给元素插入到指定元素内部的末尾部分
// prependTo 给元素插入到指定元素内部的开头部分

//动态创建的元素之间,可以互相嵌套
// var li=$("<li />");
// var button=$("<button />").html("删除");
// li.append(button);// $("#nav").append(li);
$("<li />").append($("<button />").html("删除")).appendTo($("#nav"))

动态创建的元素添加事件,在创建的函数中,再添加一次  

$(function(){ 
    $("#add").click(function(){
        var li=$("<li />")  
        li.append($("<span />").html("你好")); 
        li.append($("<button />").html("删除").addClass("delete")) 
        $("#nav").append(li)      
        $(".delete").click(function(){ // 重新绑定一次事件                
            // .parent()当前元素的父级元素 .remove()删除指定的元素                    
            $(this).parent().remove()                
        })            
    })        
})

  .siblings() 是在同一个父级中的兄弟元素

$("xxx").on("事件名称"function(){// 事件绑定
    ...//
})
$(".alter").on("click",function(){
    ..//
}) //绑定事件
$(".alter").off("click");//解绑事件
//children("xxx") 找到子集


4. jQuery 中的事件和动画

4.1 加载 DOM

4.2 事件机制

jQuery的事件机制,指的是:jQuery对JavaScript操作DOM事件的封装,

包括了:事件绑定、事件解绑、事件触发。 

简单事件绑定: 

click(handler) 单击事件 

blur(handler) 失去焦点事件 

mouseenter(handler) 鼠标进入事件 

mouseleave(handler) 鼠标离开事件 

dbclick(handler) 双击事件 

change(handler) 改变事件,如:文本框值改变,下来列表值改变等 

focus(handler) 获得焦点事件 

keydown(handler) 键盘按下事件 

 on方式(最现代的方式,兼容zepto(移动端类似jQuery的一个库),强烈建议使用的方式)

// $(selector).on(events,selector,data,handler);第二个和第三个可选        
// 第一个参数:events,绑定事件的名称,如果多个事件(标准事件或者自定义事件),由空格分隔开    
// 第二个参数:selector, 执行该事件的后代(子)元素,利用选择器选择;this指向会发生变化    
// 第三个参数:data,传递给处理函数的数据(可以是对象或数组),事件触发的时候通过event.data来使用
// 第四个参数:handler,事件处理函数

事件解绑
$(selector).off(); 
// 没有参数,解绑匹配元素的所有事件;有参数,解绑指定事件
$(selector).off("click"); // 解绑匹配元素的所有click事件
$(selector).off( “click”, “**”  解绑所有代理的click事件,元素本身的事件不会被解绑 

 4.3 事件对象

event.data 传递给事件处理程序的额外数据 

event.currentTarget 等同于this,当前DOM对象 

event.pageX 鼠标相对于文档左部边缘的位置   offsetX 

event.type 事件类型:click,dbclick… 

event.which 鼠标的按键类型:左1 中2 右3 

event.keyCode 键盘按键代码 

event.target 触发事件源,不一定===this 

event.preventDefault(); 阻止默认行为 

event.stopPropagation(); 阻止事件冒泡 

事件冒泡:点击子元素的事件时,如果父级元素也有事件,会逐层触发事件会按照 DOM 层次结构像水泡一样不断向上只至顶端.
解决: 在事件处理函数中返回 false, 会对事件停止冒泡. 还可以停止元素的默认行为.
阻止事件冒泡,给子级加 event.stopPropagation()
event.preventDefault() 阻止默认事件,  
如何处理兼容
div.onclick=function(event){
    var e=event||window.eventconsole.log("div的点击事件")
}
sps.onclick=function(event){
    var e=event||window.event
    e.stopPropagation()//阻止事件冒泡,
    console.log("sps的点击事件")
}

event.target 触发事件源,不一定===this 

<div class="wrap">        
<div></div>        
<div></div>        
<div></div>        
<div></div>        
<p></p>    
</div>    
<script>        
$(function(){            
    $(".wrap").click(function(event){                
        console.log(event.target)                
        console.log(this)                
        if(event.target!=this){                    
            $(event.target).toggleClass("active")                
        }            
    })        
})    
</script>

event.preventDefault(); 阻止默认行为 

网页中的元素有自己的默认行为,例如:单击超链接后会跳转,单击“提交”按钮后表单会提交,有时需要组织元素的默认行为。

4.4 each

each方法 有了隐式迭代,为什么还要使用each函数遍历? 

大部分情况下是不需要使用each方法的,因为jQuery的隐式迭代特性。 如果要对每个元素做不同的处理,这时候就用到了each方法 

 作用:遍历jQuery对象集合,为每个匹配的元素执行一个函数 

$(selector).each(function(index,element){
    ...//
}); 

Element是一个 js对象,需要转换成jquery对象 

参数一表示当前元素在所有匹配元素中的索引号

参数二表示当前元素(DOM对象) 



jQuery 效果 函数

方法描述
animate()对被选元素应用“自定义”的动画
clearQueue()对被选元素移除所有排队的函数(仍未运行的)
delay()对被选元素的所有排队函数(仍未运行)设置延迟
dequeue()运行被选元素的下一个排队函数
fadeIn()逐渐改变被选元素的不透明度,从隐藏到可见
fadeOut()逐渐改变被选元素的不透明度,从可见到隐藏
fadeTo()把被选元素逐渐改变至给定的不透明度
hide()隐藏被选的元素
queue()显示被选元素的排队函数
show()显示被选的元素
slideDown()通过调整高度来滑动显示被选元素
slideToggle()对被选元素进行滑动隐藏和滑动显示的切换
slideUp()通过调整高度来滑动隐藏被选元素
stop()停止在被选元素上运行动画
toggle()对被选元素进行隐藏和显示的切换

1. jQuery 隐藏/显示 

(1) jQuery hide() 和 show()

通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素

$(selector).hide(speed,callback);

$(selector).show(speed,callback);

(2)jQuery toggle()

通过 jQuery,您可以使用 toggle() 方法来切换 hide() 和 show() 方法。

显示被隐藏的元素,并隐藏已显示的元素:

$(selector).toggle(speed,callback);

可选的 speed 参数规定隐藏/显示的速度,可以取以下值:"slow"、"fast" 或毫秒。

可选的 callback 参数是 toggle() 方法完成后所执行的函数名称。

2.  jQuery 淡入淡出

  jQuery Fading 方法  

  通过 jQuery,可以实现元素的淡入淡出效果。

  jQuery 拥有下面四种 fade 方法:

  • fadeIn()
  • fadeOut()
  • fadeToggle()
  • fadeTo()

(1)fadeIn( )方法

fadeIn() 方法使用淡入效果来显示被选元素,假如该元素是隐藏的。

$(selector).fadeIn(speed,callback)

speed

可选。规定元素从隐藏到可见的速度。默认为 "normal"。

可能的值:

  • 毫秒 (比如 1500)
  • "slow"
  • "normal"
  • "fast"

在设置速度的情况下,元素从隐藏到可见的过程中,会逐渐地改变其透明度(这样会创造淡入效果)。

callback

可选。fadeIn 函数执行完之后,要执行的函数。

如需学习更多有关 callback 的内容,请访问我们的 jQuery Callback 这一章。

除非设置了 speed 参数,否则不能设置该参数。

提示:如果元素已经显示,则该效果不产生任何变化,除非规定了 callback 函数。

注释:该效果适用于通过 jQuery 隐藏的元素,或在 CSS 中声明 display:none 的元素(但不适用于 visibility:hidden 的元素)。

(2) fadeOut( )方法

fadeOut() 方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的。

$(selector).fadeOut(speed,callback)
speed

可选。规定元素从可见到隐藏的速度。默认为 "normal"。

可能的值:

  • 毫秒 (比如 1500)
  • "slow"
  • "normal"
  • "fast"

在设置速度的情况下,元素从可见到隐藏的过程中,会逐渐地改变其透明度(这样会创造淡出效果)。

callback

可选。fadeOut 函数执行完之后,要执行的函数。

如需学习更多有关 callback 的内容,请访问我们的 jQuery Callback 这一章。

除非设置了 speed 参数,否则不能设置该参数。

提示:如果元素已经隐藏,则该效果不产生任何变化,除非规定了 callback 函数。

(2)jQuery fadeToggle() 方法

jQuery fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。

如果元素已淡出,则 fadeToggle() 会向元素添加淡入效果。

如果元素已淡入,则 fadeToggle() 会向元素添加淡出效果。

$(selector).fadeToggle(speed,callback);

(3)jQuery fadeTo() 方法

jQuery fadeTo() 方法允许渐变为给定的不透明度(值介于 0 与 1 之间,不会隐藏)。

$(selector).fadeTo(speed,opacity,callback);

必需的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。

fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。

可选的 callback 参数是该函数完成后所执行的函数名称。

3. jQuery 动画

animate( ) 方法执行 CSS 属性集的自定义动画

该方法通过CSS样式将元素从一个状态改变为另一个状态。CSS属性值是逐渐改变的,这样就可以创建动画效果。

只有数字值可创建动画(比如 "margin:30px")。字符串值无法创建动画(比如 "background-color:red")。

注释:使用 "+=" 或 "-=" 来创建相对动画(relative animations)。

语法1:

$(selector).animate(styles,speed,easing,callback)
styles

必需。规定产生动画效果的 CSS 样式和值。

CSS 样式使用 DOM 名称(比如 "fontSize")来设置,而非 CSS 名称(比如 "font-size")

speed

可选。规定动画的速度。默认是 "normal"。                        

可能的值:

  • 毫秒 (比如 1500)
  • "slow"
  • "normal"
  • "fast"
easing

可选。规定在不同的动画点中设置动画速度的 easing 函数。

内置的 easing 函数:

  • swing
  • linear

扩展插件中提供更多 easing 函数。

callback

可选。animate 函数执行完之后,要执行的函数。               

语法2:

styles必需。规定产生动画效果的 CSS 样式和值(同上)。
options

可选。规定动画的额外选项。

可能的值:

  • speed - 设置动画的速度
  • easing - 规定要使用的 easing 函数
  • callback - 规定动画完成之后要执行的函数
  • step - 规定动画的每一步完成之后要执行的函数
  • queue - 布尔值。指示是否在效果队列中放置动画。如果为 false,则动画将立即开始
  • specialEasing - 来自 styles 参数的一个或多个 CSS 属性的映射,以及它们的对应 easing 函数


4. jQuery 停止动画

jQuery stop() 方法用于停止动画或效果,在它们完成之前。

stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。

$(selector).stop(stopAll,goToEnd);

可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。

可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。

因此,默认地,stop() 会清除在被选元素上指定的当前动画。


5. jQuery Callback 

jQuery Callback 函数

当动画 100% 完成后,即调用 Callback 函数。

当动画 100% 完成后,即调用 Callback 函数。


jQuery 事件

jQuery 事件方法

事件方法会触发匹配元素的事件,或将函数绑定到所有匹配元素的某个事件。

方法描述
bind()向匹配元素附加一个或更多事件处理器
blur()触发、或将函数绑定到指定元素的 blur 事件
change()触发、或将函数绑定到指定元素的 change 事件
click()触发、或将函数绑定到指定元素的 click 事件
dblclick()触发、或将函数绑定到指定元素的 double click 事件
delegate()向匹配元素的当前或未来的子元素附加一个或多个事件处理器
die()移除所有通过 live() 函数添加的事件处理程序。
error()触发、或将函数绑定到指定元素的 error 事件
event.isDefaultPrevented()返回 event 对象上是否调用了 event.preventDefault()。
event.pageX相对于文档左边缘的鼠标位置。
event.pageY相对于文档上边缘的鼠标位置。
event.preventDefault()阻止事件的默认动作。
event.result包含由被指定事件触发的事件处理器返回的最后一个值。
event.target触发该事件的 DOM 元素。
event.timeStamp该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。
event.type描述事件的类型。
event.which指示按了哪个键或按钮。
focus()触发、或将函数绑定到指定元素的 focus 事件
keydown()触发、或将函数绑定到指定元素的 key down 事件
keypress()触发、或将函数绑定到指定元素的 key press 事件
keyup()触发、或将函数绑定到指定元素的 key up 事件
live()为当前或未来的匹配元素添加一个或多个事件处理器
load()触发、或将函数绑定到指定元素的 load 事件
mousedown()触发、或将函数绑定到指定元素的 mouse down 事件
mouseenter()触发、或将函数绑定到指定元素的 mouse enter 事件
mouseleave()触发、或将函数绑定到指定元素的 mouse leave 事件
mousemove()触发、或将函数绑定到指定元素的 mouse move 事件
mouseout()触发、或将函数绑定到指定元素的 mouse out 事件
mouseover()触发、或将函数绑定到指定元素的 mouse over 事件
mouseup()触发、或将函数绑定到指定元素的 mouse up 事件
one()向匹配元素添加事件处理器。每个元素只能触发一次该处理器。
ready()文档就绪事件(当 HTML 文档就绪可用时)
resize()触发、或将函数绑定到指定元素的 resize 事件
scroll()触发、或将函数绑定到指定元素的 scroll 事件
select()触发、或将函数绑定到指定元素的 select 事件
submit()触发、或将函数绑定到指定元素的 submit 事件
toggle()绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。
trigger()所有匹配元素的指定事件
triggerHandler()第一个被匹配元素的指定事件
unbind()从匹配元素移除一个被添加的事件处理器
undelegate()从匹配元素移除一个被添加的事件处理器,现在或将来
unload()触发、或将函数绑定到指定元素的 unload 事件


jQuery 文档操作

jQuery 文档操作方法

这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html()。

方法描述
addClass()向匹配的元素添加指定的类名。
after()在匹配的元素之后插入内容。
append()向匹配元素集合中的每个元素结尾插入由参数指定的内容。
appendTo()向目标结尾插入匹配元素集合中的每个元素。
attr()设置或返回匹配元素的属性和值。
before()在每个匹配的元素之前插入内容。
clone()创建匹配元素集合的副本。
detach()从 DOM 中移除匹配元素集合。
empty()删除匹配的元素集合中所有的子节点。
hasClass()检查匹配的元素是否拥有指定的类。
html()设置或返回匹配的元素集合中的 HTML 内容。
insertAfter()把匹配的元素插入到另一个指定的元素集合的后面。
insertBefore()把匹配的元素插入到另一个指定的元素集合的前面。
prepend()向匹配元素集合中的每个元素开头插入由参数指定的内容。
prependTo()向目标开头插入匹配元素集合中的每个元素。
remove()移除所有匹配的元素。
removeAttr()从所有匹配的元素中移除指定的属性。
removeClass()从所有匹配的元素中删除全部或者指定的类。
replaceAll()用匹配的元素替换所有匹配到的元素。
replaceWith()用新内容替换匹配的元素。
text()设置或返回匹配元素的内容。
toggleClass()从匹配的元素中添加或删除一个类。
unwrap()移除并替换指定元素的父元素。
val()设置或返回匹配元素的值。
wrap()把匹配的元素用指定的内容或元素包裹起来。
wrapAll()把所有匹配的元素用指定的内容或元素包裹起来。
wrapinner()将每一个匹配的元素的子内容用指定的内容或元素包裹起来。


jQuery 遍历

jQuery 遍历函数

jQuery 遍历函数包括了用于筛选、查找和串联元素的方法。

函数描述
.add()将元素添加到匹配元素的集合中。
.andSelf()把堆栈中之前的元素集添加到当前集合中。
.children()获得匹配元素集合中每个元素的所有子元素。
.closest()从元素本身开始,逐级向上级元素匹配,并返回最先匹配的祖先元素。
.contents()获得匹配元素集合中每个元素的子元素,包括文本和注释节点。
.each()对 jQuery 对象进行迭代,为每个匹配元素执行函数。
.end()结束当前链中最近的一次筛选操作,并将匹配元素集合返回到前一次的状态。
.eq()将匹配元素集合缩减为位于指定索引的新元素。
.filter()将匹配元素集合缩减为匹配选择器或匹配函数返回值的新元素。
.find()获得当前匹配元素集合中每个元素的后代,由选择器进行筛选。
.first()将匹配元素集合缩减为集合中的第一个元素。
.has()将匹配元素集合缩减为包含特定元素的后代的集合。
.is()根据选择器检查当前匹配元素集合,如果存在至少一个匹配元素,则返回 true。
.last()将匹配元素集合缩减为集合中的最后一个元素。
.map()把当前匹配集合中的每个元素传递给函数,产生包含返回值的新 jQuery 对象。
.next()获得匹配元素集合中每个元素紧邻的同辈元素。
.nextAll()获得匹配元素集合中每个元素之后的所有同辈元素,由选择器进行筛选(可选)。
.nextUntil()获得每个元素之后所有的同辈元素,直到遇到匹配选择器的元素为止。
.not()从匹配元素集合中删除元素。
.offsetParent()获得用于定位的第一个父元素。
.parent()获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。
.parents()获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。
.parentsUntil()获得当前匹配元素集合中每个元素的祖先元素,直到遇到匹配选择器的元素为止。
.prev()获得匹配元素集合中每个元素紧邻的前一个同辈元素,由选择器筛选(可选)。
.prevAll()获得匹配元素集合中每个元素之前的所有同辈元素,由选择器进行筛选(可选)。
.prevUntil()获得每个元素之前所有的同辈元素,直到遇到匹配选择器的元素为止。
.siblings()获得匹配元素集合中所有元素的同辈元素,由选择器筛选(可选)。
.slice()将匹配元素集合缩减为指定范围的子集。

1. each( ) 方法规定为每个匹配元素规定运行的函数。

提示:返回 false 可用于及早停止循环。

语法

$(selector).each(function(index,element))
参数描述
function(index,element)

必需。为每个匹配元素规定运行的函数。

  • index - 选择器的 index 位置
  • element - 当前的元素(也可使用 "this" 选择器)