一、事件
1、加载Dom事件
执行时机
$(document).ready()方法和window.onload方法有相似的功能,但在执行时机方面是有区别的。
window.onload:在网页中所有的元素(包括元素所有的关联文件)完全加载到浏览器后才执行,即javascript此时才可以访问网页中的任何元素,只执行一次。
$(document).ready():通过$(document).ready处理,DOM完全就绪后可以被任意调用,可执行多次。
2、事件绑定和移除事件
事件绑定
Bind()的调用格式:Bind( type [,data] , fn);
第1个参数是事件类型,类型包括:blur、focus 、load 、resize 、scroll 、unloand 、click 、dblclick 、mousedown 、mouseup 、mousemove 、
mouseover 、mouseout 、mouseenter 、mouseleave 、change 、select 、submit 、keydown 、keypress 、keyup 和error等,也可以是自定义名称
第2个参数为可选参数,作为event.data属性值传递给事件对象的额外数据对象
第3个参数则是用来绑定的处理函数,Fn
使用 .bind() 时,选择器匹配的元素会附加一个事件处理函数,而以后再添加的元素则不会有。也就是说,只处理已存在的事件,后面动态添加的就不处理了。
注意:在jQuery中的事件绑定类型比普通的JavaScript事件中少了“on” 如:click与onclick()函数
例:
$(function() {
$("#panel h5.head").bind("mouseout", function() {
$(this).next("div.content").hide();
});
$("#panel h5.head").bind("mouseover", function() {
$(this).next("div.content").show(); }) })
这样,当我们用鼠标指上标题时,内容就会显示,当鼠标移开标题是,内容就会自动收缩。
事件移除:
移除按钮上以前注册的事件:unbind([type],[data])
同时移除多个事件:unblind(type1).unbind(type2)......unbind(typeN)
3、合成事件
a、hover()方法
$(function(){
$("#panel h5.head").hover(function(){
$(this).next("div.content").show();
},function(){
$(this).next("div.content").hide();
});
});
b、Toggle()方法
$(funcion){
$("#panel h5.head").toggle(function(){
$(this).addclass("highlight").show();
},function(){
$(this).remove("highlight");
$(this).next("div.content").hide();
});
});
4、事件冒泡
定义:子元素和父元素绑定同样的事件,子元素该事件被触发了,父元素也相应的触发,事件按照特定顺序由里往外响应
引发的问题及解决方案: 问题:引起预料之外的结果 解决方案:1 事件注册之后return false; 2 event.stopPropagation(); 注:event是由函数中传下来的
阻止默认行为:preventDefault() 或者 return false
停止事件冒泡
$("span").bind("click", function(even) {
var txt = $('#msg').html() ;
$('#msg').html(txt);
even.stopPropagation();//停止
5、事件对象的属性
1. Event.type()方法. 可以获取到事件的类型
2. Event.preventDefault().方法 阻止默认的事件行为.
获取到触发事件的元素.jQuery对其封装后
避免了w3c.IE和safari浏览器不同标准的差异.
例子: $(“#panle h5.head”).toggle(function(){
$(this).next(“div.content”).hide(600);//在600毫秒内隐藏起来
},function(){
$(this).next(“div.content”).show(600);//在600毫秒内显示出来起来
});
这样,元素就动起来了,除了可以直接写数字外,还有速度参数,eg:slow(600毫秒)normal(400毫秒),fast(200毫秒)
注意:在用show()方法和hide()方法时,一般把css样式display属性的值设置为none
2、fadeln()方法和fadeOut()方法
定义:这两种方法只改变元素的不透明度,fadeout()方法会在指定的一段时间内降低元素的不透明度,直到元素完全消失(“display:none”),
fadeln()方法则相反。
例子:$(“#panle h5.head”).toggle(function(){
$(this).next(“div.content”).fadeOut();//单击连接后,“内容”慢慢的消失了(淡出),
},function(){
$(this).next(“div.content”).fadeIn()//当再次单击连接,“内容”又慢慢的显示出了(淡入)
});
3、slideUp()方法和slideDown()方法
$(this).next(“div.content”).slideUp();
},function(){
$(this).next(“div.content”).slideDown()
});
当使用关键字时要加引号,如:show(slow),如果用数字作为时间参数时就不需要加引号,如:show(1000)。
4、自定义动画方法animate(动画参数,执行时间,回调函数)
注意要执行元素的移动 position: absolute;
下面是关于animate的代码:
<!DOCTYPE html>
<html> <head>
<title></title>
<style type="text/css">
#panel{
position: relative;height: 100px; border: 1px solid #0050D0;background: #96E555; cursor: pointer; 100px; }
</style>
<script type="text/javascript" src="jquery-1.4.1-vsdoc.js"></script>
<script type="text/javascript">
$(function(){
//图片向右运动 /* $("#panel").click(function(){ $(this).animate({left:"+=500px"},3000); });*/
//图片向左运动 /* $("#panel").click(function(){ $(this).animate({left:"-=500px"},3000); });*/
//同时执行多个动画 /*$("#panel").click(function(){ $(this).animate({left:"500px",height:"200px"},3000);});*/
//综合动画
/* $("#panel").css("opacity","0.5");
$("#panel").click(function(){
$(this).animate({left:"400px",height:"200px",opacity:"1"},3000)
.animate({top:"400px","200px"},3000)
.fadeOut("slow"); });*/
//动画回调函数
/* $("#panel").css("opacity","0.5");
$("#panel").click(function(){
$(this).animate({left:"400px",height:"200px",opacity:"1"},3000)
.animate({top:"400px","200px"},3000,function(){
$(this).css("border","5px solid blue");}) });*/
//停止元素的动画
$("#panel").hover(function(){
$(this).stop(true)
.animate({"150"},200)
.animate({"300"},300);
},function(){
$(this).stop()
.animate({height:"22"},300)
.animate({"60"},300); }); });
</script> </head>
<body><div id="panel"></div> </body> </html>
5、其他的jQuery的动画方法
总结:学了这一章之后,做了两个小的测试,一个是视频展示效果(点击按钮,电影或者视频列表会左右滚动),另一个是淘宝商城商品类别列表的效果。虽然这
两个做得都不是很完整(比如说:样式没有调好.....),但基本效果还是有的,还是有一点点的成就感。另外,在做动画的过程中,需要特别注意动画的执
行顺序,也要注意非动画方法会捅对,可以通过动画方法的回调函数解决这个问题。