JQuery中的事件和动画

1.JQuery中的事件

         1.1 加载DOM

                   以浏览器装载文档为例,在页面加载完毕后,浏览器为通过JavaScript为DOM元素添加事件。JQuery用$(document).ready()来代替JavaScript中的window.onload方法。两者具有以下区别:

                   -1. 执行时机

                            window.onload是在网页中所有的元素(包括元素的关联文件)完全加载到浏览器后才执行,即JavaScript此时才可以访问网页中的任何元素。

                      

$(document).ready()在DOM完全就绪时就可以被调用。

                            显然,把网页解析为DOM树的速度要比把网页中的所有关联文件加载完毕来得快。但是需要注意的是由于$(document).ready()只要DOM就绪就会执行,此时关联的文件可能还没有完全加载完,如图片,如果此时获取图片高度和宽度的属性就不一定准确,解决的方法可以使用JQuery中另一个关于页面加载的方法—load()方法

                          

$(window).load(function(){
                                     // Your
code
                                     })

                   -2. 多次执行

                      

JavaScript的onload事件一次只能保存对一个函数的引用,他会自动用后面的函数函数覆盖前面的函数。
                            window.onload =
function1;//无效,被function2覆盖
                            window.onload =
function2;
                            而每次调用$(document).ready()都会在现有的行为上追加新的行为
                            $(document).ready(function(){
                                     function1();//有效
                            })
                            $(document).ready(function(){
                                     function2();//有效
                            })

                   -3. 简写方式

                    

以下三种方式等价:
                            $(document).ready(function(){
                                     // Your
Code
                            })
                            $(function(){
                                     // Your
Code
                            })//第一种的简写
                            $().ready(function(){
                                     // Your
Code
                            })//$(document)简写为$()

         1.2 事件绑定

                   bind(type [,data],fn)文档装载完后,可以通过bind来绑定事件

                            type:事件类型,如blur, focus, load, resize, scroll, unload, click, dbclick, mousedown, mouseup, mouseover, mousemove, mouseout, mouseenter, mouseleave, change, select, submit, keyperss, keyup, keydown, error等,当然也可以是自定义名称。

                            data:可选参数,作为event.data属性值传递给事件对象的额外数据对象;

                            fn:用来绑定的处理函数。

                   -1. 基本效果

                            $(function(){

         $(“#head”).bind(“click”,function(){

         $(this).next(“div.content”).show();

})

})

                   -2. 简写效果

                            click,mouseover,mouseout这些事件经常使用到,JQuery提供了一些简写方法,如:

                            $(“#head”).click(function(){

         $(this).next(“div.content”).show();

}       

)

                   -3.合成事件

                            ·hover(enter,leave)模拟光标悬停事件,光标移动到元素上时触发enter事件,光标离开时触发leave事件,例:

$(document).ready(function(){
$("#fruit").hover(function(){
    $(this).next("ul").show();
},function(){
    $(this).next("ul").hide();
})
})

                            toggle(fn1, fn2, ... , fn)模拟鼠标连续单击事件,第一次点击触发f1事件,以此类推,例:

$(document).ready(function(){
    $("#fruit").toggle(function(){
        $(this).next("ul").show();
    },function(){
        $(this).next("ul").hide();
    })
})

         1.3.事件冒泡

                   如下图,div, li, ul 都绑定了同样的click事件F1(), 当我们点击ul元素时,就会触发函数F1三次,且顺序为ul→li→div,此即由事件冒泡引起的。


<div onclick="F1();">
<li onclick="F1();">
<ul onclick="F1();"></ul>
</li>
</div>

                   防止方法:

                   -1. 事件对象,在程序中使用事件对象很简单,只需为函数添加一个参数,如:

                   $(“element”).bind(“click”,function(event){  //event:事件对象

                            // Your code

})

这样,当单击”element”元素时,事件对象就被创建了。这个事件对象只有事件处理函数才可以访问到。事件处理函数执行完毕后,事件对象就被销毁。

2. JQuery中的动画皆可以使用参数 

         2.1 show() & hide():等同于通过设置display的样式

                可以添加参数(“slow”:600ms,”normal”:400ms, “fast”:200ms,100:100ms),采用同时增加/减少高度、宽度、透明度来实现的。

         2.2 fadeIn() & fadeOut(),只改变元素的不透明度