jQuery学习之路(3)- 事件

▓▓▓▓▓▓ 大致介绍

  jQuery增加了并扩展了基本的事件处理机制,不但提供了更加优雅的事件处理语法,而且极大地增强了事件处理能力

▓▓▓▓▓▓ jQuery中的事件

▓▓▓▓▓▓ 加载DOM

    在jQuery中是用$(document).ready()方法来替代JavaScript中的window.onload方法的,但是他们也有一些不同点

    1、执行时机

    例如我们有一个有很多图片的网页

    $(document).ready()方法是在这个网页的DOM树加载完就可以执行的,而window.onload方法必须在DOM树加载完和图片都加载完才执行

    如果使用jQuery我们想要在整个页面加载完在执行可以使用load()方法

    下面两段代码的功能是一样的

            // jQuery
            $(window).load(function(){
                // 代码1
            });
            // JavaScript
            window.onload = function(){
                // 代码2
            };

    2、多次使用

    JavaScript的onload事件一次只能保存对一个函数的引用,而$(document).ready()可以保存多个

            function one(){
                alert(‘1‘);
            }

            function two(){
                alert(‘2‘);
            }

            // JavaScript
            window.onload = one;
            window.onload = two;//只执行two()

            // jQuery
            $(document).ready(function(){
                one();
            });
            $(document).ready(function(){
                two();
            });//one() 和 two()都会执行

    

    3、简写方式

    $(document).ready(function(){});可以简写为$(function(){});

▓▓▓▓▓▓ 事件绑定

    bind()函数的语法:bind(type,[.data],fn)

    第一个参数是事件类型

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

    第三个参数是用来绑定的处理函数

    用例子来看,有两个div,第二个div隐藏,当我们点击第一个div时,第二个div显示

    <div id="div1"></div>
    <div id="div2"></div>
    <script type="text/javascript">
    $(function(){

        $(‘#div1‘).bind(‘click‘,function(){
            $(this).next().show();
        });

    });

    

    增加功能,当点击div1时如果div2是显示的,则隐藏它,否则就显示它

    $(function(){

        $(‘#div1‘).bind(‘click‘,function(){

            if($(this).next().is(‘:visible‘)){
                $(this).next().hide();
            }else{
                $(this).next().show();
            }

        });

    });

    简写:

        $(‘#div1‘).click(function(){
            if($(this).next().is(‘:visible‘)){
                 $(this).next().hide();
             }else{
                 $(this).next().show();
             }

        })

▓▓▓▓▓▓ 合成事件

    1、hover()方法

    用于模拟光标悬停事件。当光标移动到元素上时触发第一个函数,当光标移出元素时,会触发第二个函数

        $(‘#div1‘).hover(function(){
            $(this).next().show();
        },function(){
            $(this).next().hide();
        });

    2、toggle()方法

    用于模拟鼠标连续单击事件,当鼠标第一次点击元素,触发第一个函数,当鼠标点击同一个函数时触发第二个函数

        $(‘#div1‘).toggle(function(){
            $(this).next().show();
        },function(){
            $(this).next().hide();
        });

▓▓▓▓▓▓ 阻止事件冒泡和阻止默认行为

    1、阻止事件冒泡

    stopPropagation()方法

    2、阻止默认行为

    preventDefault()方法

    注意:1、return false 在jQuery中是即阻止事件冒泡又阻止默认行为

         2、jQuery不支持事件捕获

▓▓▓▓▓▓ 事件对象的属性

    1、event.type

    改方法的作用是获取到事件的类型

        $(‘#div1‘).click(function(ev){
            alert(ev.type);//click
        })

    2、event.target

    获取到触发事件的元素

        $(‘#div1‘).click(function(ev){
            alert(ev.target.id);//div1
        })

    3、event.relatedTarget

    获取相关元素

    4、event.pageX和event.pageY

    获取到光标相对于页面的x的坐标和y的坐标

        $(‘#div1‘).click(function(ev){
            alert(ev.pageX + ‘,‘ + ev.pageY);//275,181
        })

    5、event.which

    该方法的作用是在鼠标单击事件中获取到鼠标的左、中、右键;在键盘事件中获取键盘的按键

        $(‘#div1‘).click(function(ev){
            alert(ev.which);//1是鼠标左键,2是鼠标中见,3是鼠标右键
        })

▓▓▓▓▓▓ 移除事件

    unbind()方法语法: unbind([type],[data]);

    第1个参数是事件类型,第2个参数是将要移除的函数

    看一个例子,为div1绑定如下事件

        $(‘#div1‘).bind(‘click‘,function(){
            alert(‘1‘);
        }).bind(‘click‘,function(){
            alert(‘2‘);
        }).bind(‘mouseover‘,function(){
            alert(‘3‘);
        })

    1、如果没有参数,则删除所有绑定的事件

        $(‘#div1‘).unbind();//删除所有事件

    2、如果提供了事件类型作为参数,则只删除该类型的绑定事件

        $(‘#div1‘).unbind(‘mouseover‘);//删除mouseover事件

    3、如果把绑定时传递的处理函数作为第2个参数,则只有这个特定的时间处理函数会被删除

▓▓▓▓▓▓ 模拟操作

    1、常用模拟

    在jQuery中可以使用trigger()方法完成模拟操作,例如可以使用下面的代码来触发id为btn的按钮的click事件

        $(‘#btn‘).trigger(‘click‘);

    

    2、触发自定义事件

    trigger()方法不仅能触发浏览器支持的具有相同名称的事件,也可以触发自定义名称的事件。

        $(‘#btn‘).bind(‘myclick‘,function(){
            alert(‘1‘);
        });
        $(‘#btn‘).trigger(‘myclick‘);

    

    3、传递数据

        $(‘#btn‘).bind(‘myclick‘,function(event,message1,message2){
            alert(message1 + message2);
        });
        $(‘#btn‘).trigger(‘myclick‘,["1","2"]);

    4、执行默认操作

        $(‘input‘).trigger(‘focus‘);

    以上代码会触发input元素的focus事件,也会使<input>元素本身得到焦点

    如果只想触发<input>元素上绑定的特定事件,同时取消浏览器对此事件的默认操作可以使用triggerHandler()方法

▓▓▓▓▓▓ 其他用法

    添加事件命名空间,便于管理

    例如可以把元素绑定的多个事件类型用命名空间规范起来

        $(‘div‘).bind(‘click.plugin‘,function(){
            alert(‘1‘);
        });
        $(‘div‘).bind(‘mouseover.plugin‘,function(){
            alert(‘2‘);
        });
        $(‘div‘).bind(‘dbclick.plugin‘,function(){
            alert(‘3‘);
        });
        $(‘button‘).click(function(){
            $(‘div‘).unbind(‘.plugin‘);
        })
时间: 2024-08-27 13:24:08

jQuery学习之路(3)- 事件的相关文章

jQuery 学习之路(4):事件

一.文档载入事件 二.事件绑定 三.事件对象 四.浏览器事件 五.表单事件 六.键盘事件 七.鼠标事件 jQuery 学习之路(4):事件,布布扣,bubuko.com

jQuery学习之路(四)之过滤选择器

今天是第四课主要学习过滤选择器 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>lesson4 过滤选择器</title> <link rel="stylesheet" type="text/css" href="css/lesson.css" ></link>

Jquery学习之路(三) 实现弹出层插件

弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 要弹出层,先要用一个遮罩层挡在下面的页面,此遮罩层是全屏的,页面滚动也要有,所以设置 position: fixed;还要有透明效果,下面是我定义的遮罩层css,取名mask .mask { position: fixed; width: 100%; height: 100%; backgroun

jQuery 学习之路(5):表单

处理表单中的元素 jQuery 学习之路(5):表单,布布扣,bubuko.com

Jquery 学习之路(四)高大上的图片轮换

网站首页没有一点动画怎么可以,我以前用过Flash As3做过图片切换,效果非常不错,可是麻烦,改变起来麻烦.一直都想自己做个图片切换效果,总认为比较麻烦,今天自己实践了一下,其实还比较简单.不过有个小问题,IE8不兼容模式下 设置有透明效果的div 样式添加失效了,但是我用谷歌,IE8兼容测试都ok. 反正是给自己记录的,也不多话了,js没有与页面分离,也没有做出插件.一个网站要不了几个这种效果,先实现了再说吧.最后的效果还是很高大上的. 下载地址:http://files.cnblogs.c

jQuery学习之路(1)-选择器

▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是"write Less,Do More",即倡导写更少的代码,做更多的事情.它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优

jQuery学习之路-A

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script type="text/javascript" src="D:/jquery2.0/jquery-2.0.0.js"></scr

jQuery学习之路(8)- 表单验证插件-Validation

▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API.所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言.该插件是由 Jörn Zaefferer 编写和维护的,他是 jQuery 团队的一名成员,是 jQuery UI 团队的主要开发人员,是 QUnit 的维

jQuery学习之路(2)-DOM操作

▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看看DOM操作都有哪些 逐一来看 先写一份HTML代码,后面的代码将操作这份HTML代码 <p title="选择你最喜欢的水果">你最喜欢的水果?</p> <ul> <li title="苹果">苹果</li>