jQuery (二)

一、层级

1、Child Selector (" parent > child")子元素选择器

【描述】选择所有指定"parent" 元素中指定的" child"的直接子元素。
【语法】 jQuery( "parent > child" )

parent:任何有效的选择器。
child:用来筛选子元素的选择器。

2、descendant selector (后代选择器)

【描述】选择给定的祖先元素的所有后代元素。
【语法】jQuery( "ancestor descendant" )

ancestor:任何有效的选择器。
descendant:一个用来筛选后代元素的选择器。

使用案例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="jquery-1.11.3.js"></script>
</head>
<body>
<ul class="topnav">
	<li>杨</li>
	<li>旭
		<ul>
			<li>东</li>
			<li>最</li>
			<li>最</li>
		</ul>
	</li>
	<li>帅</li>
</ul>

<script>
	//给ul标签的儿子辈添加样式
	$(function(){
		$(".topnav > li").css("border","1px solid red");
	})
	//给ul标签的所有后代添加样式
	$(function(){
		$(".topnav li").css("border","1px solid red");
	})
</script>
</body>
</html>

3、next adjacent selector (" prev + next‘ )相邻选择器

【描述】选择所有紧接在"prev” 元素后的"next” 元素
【语法】jQuery( "prev + next" )

prev:任何有效的选择器。
next:用于筛选紧跟在"prev"后面的元素的选择器。

使用案例

//给li标签的相邻元素添加样式
$(function(){
	$("li + li").css("border","1px solid red");
})

jQuery (二)

4、Next Siblings Selector ("prev ~ siblings")

【描述】匹配"prev” 元素之后的所有兄弟元素。具有相同的父元素,匹配过滤“siblings" 选择器。
【语法】jQuery( "prev ~ siblings" )

prev:任何有效的选择器
siblings:一个选择器来过滤第一选择器以后的兄弟元素。

(prev + next)和(prev ~ siblings)之间最值得注意的不同点是他们各自的可及之范围。前者只达到紧随的同级元素,后者扩展了该达到跟随其的所有同级元素。

使用案例

<body>
<span id="prev">女</span>
<div>神</div>
<div>荆</div>
<div>润
	<div>娜</div>
</div>

<script>
//给span标签后所有的兄弟关系的div标签添加样式
    $(function(){
	    $("#prev~div").css("border","1px solid red");
    })
</script>
</body>

jQuery (二)

二、jQuery 扩展

jQuery (二)
jQuery (二)
jQuery (二)

使用案例

<body>
<table border="1">
	<tr><td>index 0</td></tr>
	<tr><td>index 1</td></tr>
	<tr><td>index 2</td></tr>
	<tr><td>index 3</td></tr>
	<tr><td>index 4</td></tr>
</table>

<script>
	$(function(){
		$("table tr:even").css("background-color","red");
	})
</script>
</body>

jQuery (二)

三、可见性过滤

1、hidden selector

【描述】选择所有隐藏的元素。
【语法】jQuery( ":hidden" )

元素可以被认为是隐藏的几个情况:

1)他们的CSS display值是none。
2)他们是 type= "hidden"的表单元素。
3)它们的宽度和高度都设置为0。
4)一个祖先元素是隐藏的,因此该元素是不会在页面上显示。

2、visible selector

【描述】选择所有可见的元素。
【语法】jQuery( ":visible" )

如果元素占据文档中一定的空间,元素被认为是可见的。可见元素的宽度或高度,题于零。

所以:元素的visibility: hidden或opacity: 0被认为是可见的,因为他们仍然占用空间布局。

不在文档中的元素是被认为隐藏的:jQuery没有办法知道他们是否是可见的,因为元索可见性依赖于适用的样式。

隐藏元素上做动画,元素被认为是可见的,直到动画结束。显示元素上做动画,在动画的开始处该元素被认为是可见的。

四、鼠标事件

1、.click() :点击事件

2、.dblclick() : 双击事件

3、.hover() :鼠标悬停和离开

4、.mousedown():鼠标按下

5、.mouseenter() :鼠标进入元素

6、.mouseleave() :鼠标离开元素

7、.mousemove() :鼠标在元素内移动

8、.mouseout() :鼠标离开元素(支持事件冒泡)

9、.mouseover() :鼠标进入元索内(支持事件冒泡)

10、.mouseup() :鼠标按键被释放

点击标签,弹出内容

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="jquery-1.11.3.js"></script>
</head>
<body>
<p>闭月羞花荆润娜</p>
<p>国色天香荆润娜</p>
<p>出水芙蓉荆润娜</p>
<p>倾国倾城荆润娜</p>

<script>
//dom 实现点击标签弹出标签内容
var p = document.getElementsByTagName("p");
for(var i = 0;i < p.length;i++){
	p[i].onclick = function(){
		alert(this.innerHTML);
	}
}
//JS 实现点击标签弹出标签内容
$(function(){
	$("p").click(function(){
		alert($(this).html());
	})
})
</script>
</body>
</html>

五、键盘事件

1、keydown()

【描述】键盘按下时触发

2、keypress()

按下并抬起同一个键触发

3.keyup()

按下抬起时触发

三者依次触发,并且当 keydown() 和 keypress() 都没有被触发,才会触发 keyup()

常见的键盘按键对应代码

jQuery (二)

$(document).keydown(function(event){
	alert(event.keyCode);
})

六、浏览器事件

1、.error()

【描述】出现错误进行处理

2、.resize()

【描述】与window绑定,改变页面大小时触发

3、.scroll()

【描述】页面滚动时触发

七、文档加载事件

1、ready事件:

ready事件在DOM结构绘制完成之后就会执行。这样能确保就算有大量的媒体文件没加载出来, JS代码一样可以执行。

2、load事件:

load事件必须等到网页中所有内容全部加载完毕之后才被执行。如果一个网页中有大量的图片的话 ,则就会出现这种情况:网页文档已经呈现出来,但由于网页数据还没有完全加载完毕,导致load事件不能够即时被触发。

3.文档加载过程

(1)解析HTML结构。
(2)加载外部脚本和样式表文件。
(3)解析并执行脚本代码。
(4)构造HTML DOM模型。//ready
(5)加载图片等外部文件。
(6)页面加载完毕。//load

八、绑定事件处理器

1、.bind()

【描述】为元素绑定一个事件处理程序
【语法】.bind("事件类型",事件函数,Boolean)

鼠标滑过,背景颜色变亮

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
	button{
		width: 100px;
		height: 50px;
		background-color: darkgreen;
		border-radius: 10px;
		margin: 0 auto;
		color: #ffffff;
		font-size: 20px;
	}
	.btn{
		background-color: green;
	}
</style>
<script type="text/javascript" src="jquery-1.11.3.js"></script>
</head>
<body>
<button>按钮</button>
</body>

<script>
$(function(){
	$("button").bind({
		mouseover:function(){
			$(this).addClass("btn");
		},
		mouseout:function(){
			$(this).removeClass("btn");
		}
	})
            //用 toggleClass() ,如果有该.css属性则删去,如果没有则添加
            $("button").bind("mouseover mouseout",function(){
		$(this).toggleClass("btn");
	})
})
</script>
</html>

2、.delegate()

【描述】事件委托
【语法】.delegate("选择的元素","事件类型",处理函数)

弹出当前对象里面的内容,常用在 ul li 标签

$(function(){
    $("ul").delegate("li","click",function(){
        alert($(this).html());
    })
})

3、.off()

【描述】移除一个或多个事件处理函数
【语法】.off("事件类型",事件函数) 或者 .off("事件类型","选择的元素",事件函数)

4、.on()

【描述】添加一个或多个事件处理函数
【语法】.on("事件类型","事件函数") 或者 .on("事件类型","选择的元素",事件函数)

用 on 添加两个事件,用 off 移除其中一个

<div>
    <p>亭亭玉立荆润娜</p>
</div>

$(function(){
    var fuc=function(){
	    alert("环肥燕瘦荆润娜");
    }
    $("div").on("click mouseover","p",fuc);

    $("div").off("mouseover","p",fuc);
})

5、.one()

【描述】为元素的事件添加处理函数,处理事件在元素上每种事件类型只触发一次,一般用于引导页
【语法】.one("事件类型",事件函数)

6、.unbind()

移除事件,同理 bind()

7、.undelegate()

移除事件,同理 delegate()

九、事件对象

1、event.currentTarget

【描述】指向事件的监听着

2、event.target

【描述】指向事件的目标

例如:函数中,e = event

<div>
    <p>点击我</p>
</div>

$(function(){
    $("div").on("click",function(e){
        console.log($(e.currentTarget));//div 事件的监听者
        console.log($(e.target));//p 事件的目标
    })
})

jQuery (二)

3、event.delegateTarget

【描述】绑定了当前调用jQuery事件处理器的元素,即当前事件委托者

例如:

$(function(){
    $("div").on("click","p",function(e){T
        console.log($(this).html());//div 事件的委托者
        console.log($(e.delegateTarget));//div 事件的委托者
    })
})

4、event.pageX

【描述】鼠标相对于文档的左边缘位置

5、event.pageY

【描述】鼠标相对于文档的上边缘位置

例如:打印鼠标在蓝色区域中的位置

<style>
    #log{
        width: 500px;
        height: 500px;
        background-color: aquamarine;
        margin: 200px auto;
    }
</style>

<div id="log"></div>
<script>
	$(function(){
		$("#log").on("mousemove",function(e){
			console.log("pageX="+e.pageX +"pageY="+e.pageY);
		})
</script>

jQuery (二)

6、event.type

【描述】当前的事件类型

7、event.preventDefault()

【描述】阻止默认事件

8、event.stopPropagation()

【描述】阻止冒泡事件

十、表单事件

1、focus()

【描述】获得焦点事件

2、blur()

【描述】失去焦点事件

<form>
	<input id="#target" type="text" value="焦点1">
	<input type="text" value="焦点2">
</form>
<script>
	$(function(){
		$("target",bulr(function(){
			alert("失去焦点1");
		})
	})
</script>

jQuery (二)

3、change()

【描述】当一个元素的值改变就会触发,仅限于input,textarea,select元素

4、select()

【描述】当用户在一个元素中进行选择文本内容时触发,仅限于input,text,textarea

5、submit()

【描述】当用户试图提交表单时就会触发,仅适用于 form 元素