JQuery第三天——CSS操作与JQuery事件

  JQuery的CSS_DOM与样式操作

    样式:

    获取 class 和设置 class : class 是元素的一个属性, 所以获取 class 和设置 class 都可以使用 attr() 方法来完成.

    追加样式: addClass() 移除样式: removeClass() --- 从匹配的元素中删除全部或指定的 class

    切换样式: toggleClass() --- 控制样式上的重复切换.如果类名存在则删除它, 如果类名不存在则添加它.

    判断是否含有某个样式: hasClass() --- 判断元素中是否含有某个 class, 如果有, 则返回 true; 否则返回 false

    CSS_DOM操作 

    获取和设置元素的样式属性: css()

    获取和设置元素透明度: opacity 属性

    获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若只传递数字, 则默认单位是 px. 如需要使用其他单位则需传递一个字符串, 例如       $(“p:first”).height(“2em”);

    获取元素在当前视窗中的相对位移: offset(). 其返回对象包含了两个属性: top, left. 该方法只对可见元素有效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
*{ margin:0; padding:0;}
body {font-size:12px;text-align:center;}
a { color:#04D; text-decoration:none;}
a:hover { color:#F50; text-decoration:underline;}
.SubCategoryBox {width:600px; margin:0 auto; text-align:center;margin-top:40px;}
.SubCategoryBox ul { list-style:none;}
.SubCategoryBox ul li { display:block; float:left; width:200px; line-height:20px;}
.showmore { clear:both; text-align:center;padding-top:10px;}
.showmore a { display:block; width:120px; margin:0 auto; line-height:24px; border:1px solid #AAA;} .showmore a span { padding-left:15px; background:url(img/down.gif) no-repeat 0 0;} .promoted a { color:#F50;}
</style>
<script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
<script type="text/javascript">
$(function(){ //测试 jQuery 样式相关的方法. //1. hasClass(): 某元素是否有指定的样式
var bool = $("div:first").hasClass("SubCategoryBox");
//alert(bool);
//2. 移除样式
var bool2 = $("div:first").removeClass("SubCategoryBox");
alert(bool2);
//3. 添加样式
$("div:first").addClass("SubCategoryBox");
//4. 切换样式: 存在, 则去除; 没有, 则添加.
$(".showmore").click(function(){
$("div:first").toggleClass("SubCategoryBox");
//取消默认行为
return false;
});
//5. 获取和设置元素透明度: opacity 属性
var $css = $("div:first").css("opacity");
alert($css);
$("div:first").css("opacity",0.5);
//6. width 和 height
alert($("div:first").width());
alert($("div:first").width(300));
//7. 获取元素在当前视窗中的相对位移: offset().
//其返回对象包含了两个属性: top, left. 该方法只对可见元素有效
var top = $("div:first").offset().top;
var left = $("div:first").offset().left;
alert(top);
alert(left);
});
</script>
</head>
<body>
<div class="SubCategoryBox">
<ul>
<li ><a href="#">佳能</a><i>(30440) </i></li>
<li ><a href="#">索尼</a><i>(27220) </i></li>
<li ><a href="#">三星</a><i>(20808) </i></li>
<li ><a href="#">尼康</a><i>(17821) </i></li>
<li ><a href="#">松下</a><i>(12289) </i></li>
<li ><a href="#">卡西欧</a><i>(8242) </i></li>
<li ><a href="#">富士</a><i>(14894) </i></li>
<li ><a href="#">柯达</a><i>(9520) </i></li>
<li ><a href="#">宾得</a><i>(2195) </i></li>
<li ><a href="#">理光</a><i>(4114) </i></li>
<li ><a href="#">奥林巴斯</a><i>(12205) </i></li>
<li ><a href="#">明基</a><i>(1466) </i></li>
<li ><a href="#">爱国者</a><i>(3091) </i></li>
<li ><a href="#">其它品牌相机</a><i>(7275) </i></li>
</ul>
<div class="showmore">
<a href="more.html"><span>显示全部品牌</span></a>
</div>
</div>
</body>
</html>

    JQuery的事件

     1.加载DOM

          在页面加载完毕后, 浏览器会通过 JavaScript 为 DOM 元素添加事件.

          在常规的 JavaScript 代码中, 通常使用 window.onload 方法, 仅一个

          在 jQuery 中使用$(document).ready() 方法. 可写多个

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title> <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
<script type="text/javascript"> //加载 DOM 的两种方式: jQuery 的 和 window.onlaod
//之前的简写 :$(function(){})
$(document).ready(function(){
alert(1);
}); //以下仅执行2 ,相当于给window属性赋值两次,只执行最后的一次
/*
window.onload = function(){
alert("1");
} window.onload = function(){
alert("2");
}
*/ </script> </head>
<body>
<p>你喜欢哪个城市?</p>
<ul id="city">
<li id="bj" name="BeiJing">北京</li>
<li>上海</li>
<li id="dj">东京</li>
<li id="se">首尔</li>
</ul> <br><br>
<p>你喜欢哪款单机游戏?</p>
<ul id="game">
<li id="rl">红警</li>
<li>实况</li>
<li>*飞车</li>
<li>魔兽</li>
</ul> <br><br>
<p>你喜欢哪种开发语言?</p>
<ul id="language">
<li>C</li>
<li>Java</li>
<li>.NET</li>
<li>PHP</li>
</ul> <br><br>
gender:
<input type="radio" name="gender" value="male"/>Male
<input type="radio" name="gender" value="female"/>Female <br><br>
name: <input type="text" name="username" value="atguigu"/> </body>
</html>

      2.事件绑定     

        对匹配的元素进行特定的事件绑定: bind()

      3.合成事件

        hover(): 模拟光标悬停事件. 当光标移动到元素上时, 会触发指定的第一个函数, 当光标移出这个元素时, 会触发指定的第二个函数.

       toggle(): 用于模拟鼠标连续单击事件.(轮流执行) 第一次单击元素, 触发指定的第一个函数,

            当再一次单击同一个元素时, 则触发指定的第二个函数,

            如果有更多个函数, 则依次触发, 直到最后一个. toggle() 的另一个作用: 切换元素的可见状态.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<link href="css/style.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
<script type="text/javascript">
//为 .head 添加 Onclick 响应函数: 若 .content 隐藏则显示, 若 .content 显示, 则隐藏
$(function(){
/* $(".head").click(function(){
//is()方法判定某个元素是否符合指定选择器
var flag = $(".content").is(":hidden");
if(flag){
//show() 显示元素
$(".content").show();
}else{
$(".content").hide();
}
}); */
//bind: 为某 jQuery 对象绑定事件.
/* $(".head").bind("click",function(){
//is()方法判定某个元素是否符合指定选择器
var flag = $(".content").is(":hidden");
if(flag){
//show() 显示元素
$(".content").show();
}else{
$(".content").hide();
}
}); */
//mouseover: 鼠标移上去
//mouseout: 鼠标移出. //合成事件: hover: 鼠标移上去执行第一个函数, 移出执行第二个函数.
/* $(".head").hover(function(){
$(".content").show();
},function(){
$(".content").hide();
}); */ //合成事件: toggle: 第一次点击执行第一个函数, 第二次点击执行第二个
//函数 ... 循环执行.
$(".head").toggle(function(){
$(".content").show();
},function(){
$(".content").hide();
});
})
</script> </head>
<body>
<div id="panel">
<h5 class="head">什么是jQuery?</h5>
<div class="content">
jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
</div>
</div>
</body> </html>

          //实际测试时出现自动轮换执行

      4.事件冒泡

           事件会按照 DOM 层次结构像水泡一样不断向上直至顶端 解决:

        在事件处理函数中返回 false, 会对事件停止冒泡. 还可以停止元素的默认行为.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
body{
font-size: 13px;
line-height: 130%;
padding: 60px;
}
#content{
width: 220px;
border: 1px solid #0050D0;
background: #96E555;
}
span{
width: 200px;
margin: 10px;
background: #666666;
cursor: pointer;
color: white;
display: block;
}
p{
width: 200px;
background: #888;
color: white;
height: 16px;
}
</style>
<script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
<script type="text/javascript"> $(function(){
//事件的冒泡: 什么是事件的冒泡
//点击span 依次弹出 span div body
$("body").click(function(){
alert("body");
});
$("div").click(function(){
alert("div");
});
$("span").click(function(){
alert("span");
//如何解决事件的冒泡: 通过在响应函数的结尾返回 false, 可以阻止冒泡.
return false;
}); }) </script>
</head>
<body>
<div id="content">
外层div元素
<span>内层span元素</span>
外层div元素
</div> <div id="msg"></div> <br><br>
<a href="http://www.hao123.com">WWW.HAO123.COM</a>
</body>
</html>

      5.事件对象的属性

        事件对象: 当触发事件时, 事件对象就被创建了. 在程序中使用事件只需要为函数添加一个参数. 该事件对象只有事件处理函数才能访问到.

            事件处理函数执行完毕后, 事件对象就被销毁了.

       event.pageX, event.pageY: 获取到光标相对于页面的 x, y 坐标.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
body{
font-size: 13px;
line-height: 130%;
padding: 60px;
}
#content{
width: 220px;
border: 1px solid #0050D0;
background: #96E555;
}
span{
width: 200px;
margin: 10px;
background: #666666;
cursor: pointer;
color: white;
display: block;
}
p{
width: 200px;
background: #888;
color: white;
height: 16px;
}
</style>
<script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
<script type="text/javascript"> /*
1. 事件: 当鼠标移动时, 就会触发 mousemove 事件.
2. 如何得到事件对象: 在响应函数中添加一个参数就可以.
3. 事件对象的两个属性: pageX,pageY
*/
$(function(){
//事件的 pageX, pageY 属性
$("body").mousemove(function(obj){
$("#msg").text("x: " + obj.pageX
+ ", y: " + obj.pageY);
});
}) </script>
</head>
<body>
<div id="content">
外层div元素
<span>内层span元素</span>
外层div元素
</div> <div id="msg"></div> <br><br>
<a href="http://www.hao123.com">WWW.HAO123.COM</a>
</body>
</html>

      6.移除事件

          移除某按钮上的所有 click 事件: $(“btn”).unbind(“click”)

        移除某按钮上的所有事件: $(“btn”).unbind(); one(): 该方法可以为元素绑定处理函数. 当处理函数触发一次后, 立即被删除.

          即在每个对象上, 事件处理函数只会被执行一次.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title> <script type="text/javascript" src="../jquery-3.1.1.min.js"></script>
<script type="text/javascript"> //测试移除事件: 使用 unbind 移除事件.
//one(): 只为某一个元素添加一次事件, 事件函数响应后, 将不再被触发响应.
$(function(){
$("#rl").one("click",function(){
alert("红警");
});
/* $("li").click(function(){
alert(this.firstChild.nodeValue);
if(this.id == "bj"){
$("#bj").unbind("click"); }
}); */
}) </script> </head>
<body>
<p>你喜欢哪个城市?</p>
<ul id="city">
<li id="bj" name="BeiJing">北京</li>
<li>上海</li>
<li id="dj">东京</li>
<li id="se">首尔</li>
</ul> <br><br>
<p>你喜欢哪款单机游戏?</p>
<ul id="game">
<li id="rl">红警</li>
<li>实况</li>
<li>*飞车</li>
<li>魔兽</li>
</ul> <br><br>
<p>你喜欢哪种开发语言?</p>
<ul id="language">
<li>C</li>
<li>Java</li>
<li>.NET</li>
<li>PHP</li>
</ul> <br><br>
gender:
<input type="radio" name="gender" value="male"/>Male
<input type="radio" name="gender" value="female"/>Female <br><br>
name: <input type="text" name="username" value="atguigu"/> </body>
</html>

      JQuery的动画

      学习时使用的版本为jquery-3.1.1.min.js,测试发现动画特效出现问题,改为视频的1.7版本显示动画正常

    动画1

      hide(): 在 HTML 文档中, 为一个元素调用 hide() 方法会将该元素的 display 样式改为 none. 代码功能同 css(“display”, “none”);

      show(): 将元素的 display 样式改为先前的显示状态.

      以上两个方法在不带任何参数的情况下, 作用是立即隐藏或显示匹配的元素, 不会有任何动画.

      可以通过制定速度参数使元素动起来. 以上两个方法会同时减少(增大)内容的高度, 宽度和不透明度.

     动画2

      fadeIn(), fadeOut(): 只改变元素的透明度. fadeOut() 会在指定的一段时间内降低元素的不透明度, 直到元素完全消失.fadeIn() 则相反.

      slideDown(), slideUp(): 只会改变元素的高度. 如果一个元素的 display 属性为 none, 当调用 slideDown() 方法时,

                   这个元素将由上至下延伸显示. slideUp() 方法正好相反, 元素由下至上缩短隐藏.

      

     动画3

        toggle(): 切换元素的可见状态: 如果元素时可见的, 则切换为隐藏; 如果元素时隐藏的, 则切换为可见的.

       slideToggle(): 通过高度变化来切换匹配元素的可见性.

       fadeTo(): 把不透明度以渐近的方式调整到指定的值 (0 – 1 之间). fadeTo() 作了解 使用举例:  $("p").fadeTo("slow", 0.66

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
<link href="css/style.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="scripts/jquery-1.7.2.js"></script> <script type="text/javascript">
//演示动画效果: show() 和 hide() 方法中传入毫秒数以达到动画的效果
/*
$(function(){
$(".head").toggle(function(){
$(".content").show(1000);
}, function(){
$(".content").hide(1000);
});
}) */ //只改变高度
/*
$(function(){
$(".head").toggle(function(){
$(".content").slideDown(500);
}, function(){
$(".content").slideUp(500);
});
})
*/
//只改变透明度 $(function(){
$(".head").toggle(function(){
$(".content").fadeIn(1000);
}, function(){
$(".content").fadeOut(1000);
});
}) //toggle() 可以切换元素的可见状态.
//slideToggle(): 通过高度变化来切换匹配元素的可见性
//fadeToggle(): 通过透明度来切换元素的可见性.
//fadeTo(): 把不透明度以渐近的方式调整到指定的值 (0 – 1 之间).
/* $(function(){
$(".content").show();
var i = 1; $(".head").click(function(){
//$(".content").toggle();
//$(".content").slideToggle();
//$(".content").fadeToggle(); $(".content").fadeTo("slow", i);
i = i - 0.1;
});
}) */
</script> </head>
<body>
<div id="panel">
<h5 class="head">什么是jQuery?</h5>
<div class="content">
jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
</div>
</div>
</body> </html>

  练习:品牌列表

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
*{ margin:0; padding:0;}
body {font-size:12px;text-align:center;}
a { color:#04D; text-decoration:none;}
a:hover { color:#F50; text-decoration:underline;}
.SubCategoryBox {width:600px; margin:0 auto; text-align:center;margin-top:40px;}
.SubCategoryBox ul { list-style:none;}
.SubCategoryBox ul li { display:block; float:left; width:200px; line-height:20px;}
.showmore { clear:both; text-align:center;padding-top:10px;}
.showmore a { display:block; width:120px; margin:0 auto; line-height:24px; border:1px solid #AAA;} .showmore a span { padding-left:15px; background:url(img/down.gif) no-repeat 0 0;} .promoted a { color:#F50;}
</style>
<script type="text/javascript" src="scripts/jquery-1.3.1.js"></script>
<script type="text/javascript">
/*
var $category = $("li:gt(5):lt(10)");
此时的 lt 是在 li:gt(5) 基础上进行的.
*/
$(function(){
//1. 需要选择从 "富士" - "爱国者" 的所有 li: $category
var $category = $("li:gt(5):not(:last)");
//2. 把他们隐藏.
$category.hide();
//3. 为 .showmore 添加一个 onclick 响应函数(取消默认行为)
$(".showmore").click(function(){
if($category.is(":hidden")){
$category.show();
//4.2 使 "佳能", "尼康", "奥林巴斯" 变为高亮显示:
//添加 .promoted 的 class
$("li:contains('佳能'),li:contains('尼康'),li:contains('奥林巴斯')").addClass("promoted");
//4.3 .showmore > a > span 的文字变为: 显示精简品牌
$(".showmore > a > span").text("显示精简品牌");
//4.4 .showmore > a > span 的 background 变为:
//url(img/up.gif) no-repeat 0 0
$(".showmore > a > span").css("background","url(img/up.gif) no-repeat 0 0");
}else{
//5. 若 $category 是显示的.为上面的逆过程
$category.hide();
$("li:contains('佳能'),li:contains('尼康'),li:contains('奥林巴斯')").removeClass("promoted");
$(".showmore > a > span").css("background","url(img/down.gif) no-repeat 0 0"); }
return false;
});
});
</script>
</head>
<body>
<div class="SubCategoryBox">
<ul>
<li ><a href="#">佳能</a><i>(30440) </i></li>
<li ><a href="#">索尼</a><i>(27220) </i></li>
<li ><a href="#">三星</a><i>(20808) </i></li>
<li ><a href="#">尼康</a><i>(17821) </i></li>
<li ><a href="#">松下</a><i>(12289) </i></li>
<li ><a href="#">卡西欧</a><i>(8242) </i></li>
<li ><a href="#">富士</a><i>(14894) </i></li>
<li ><a href="#">柯达</a><i>(9520) </i></li>
<li ><a href="#">宾得</a><i>(2195) </i></li>
<li ><a href="#">理光</a><i>(4114) </i></li>
<li ><a href="#">奥林巴斯</a><i>(12205) </i></li>
<li ><a href="#">明基</a><i>(1466) </i></li>
<li ><a href="#">爱国者</a><i>(3091) </i></li>
<li ><a href="#">其它品牌相机</a><i>(7275) </i></li>
</ul>
<div class="showmore">
<a href="more.html"><span>显示全部品牌</span></a>
</div>
</div>
</body>
</html>
上一篇:Mysql explain分析SQL语句之字段属性说明


下一篇:在CMMI推广过程中EPG常犯的错误(转)