• 事件


    事件绑定

    我们一般使用的是bind()方法

    bind()方法有3个参数:

    第一个参数是事件类型,包括 blur、focus、load、resize、scroll、unload、click、dblick、

    mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、

    select、submit、keydown、keypress、keyup、和error等,当然也可以是自定义名称。

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

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

    合成事件

    jQuery有两个合成事件——hover()方法,类似前面讲过的ready()方法,hover()方法和toggle()方法都属于jQuery自定义的方法。

    hover()方法

    hover()方法的语法结构为: hover(enter,leave);

    hover()方法用于模拟光标悬停事件。当光标移动到元素上时,会触发指定的第1个函数(enter);

    当光标移出这个元素时,会触发指定的第2个函数(leave)。

    示例:

    $(function () {
                $("#pane1 h5.head").hover(function () {
                    $(this).next().show();
                }.function(){
                    $(this).next().hide();
                });
    });

    toggle()方法

    toggle()方法的语法结构为: toggle(fn1,fn2,…fnN);

    toggle()方法用于模拟鼠标连续单击事件。第1次单击元素,触发指定的第1个函数(fn1);当再次单击同一元素时,则触发指定的第2个函数(fn2);如果有更多函数,则依次触发,直到最后一个。随后的每次单击都重复对这几个函数的轮番调用。

    事件冒泡

    什么是事件冒泡呢?

    在页面上可以有多个事件,也可以多个元素响应同一个事件。假设网页上有两个元素,其中一个元素嵌套在另一个元素里,并且都被绑定了click事件,同时<body>元素上也绑定了click事件。

    例如:

    $(function () {
                //为span元素绑定click事件
                $('span').bind("click".function(){
                    var txt = $('#msg').html(txt);
                });
                //为div元素绑定click事件
            $('#content').bind("click".function(){
                var txt = $('#msg').html()+"<p>外层div元素被单击<p/>";
                $('#msg').html(txt);
            });
            //为body元素绑定click事件
                $("body").bind("click".function(){
                    var txt = $('#msg').html()+"<p>body元素被单击.<p/>";
                $('#msg').html(txt);
                });
            })
        </script>
    </head>
    <body>
        <div id="countent">
            外层div元素
            <span>内层span元素</span>
            外层div元素
        </div>
        <div id="msg"></div>

    事件冒泡引发的问题

    事件冒泡可能会引起预料之外的效果。上例中,本来只想触发<span>元素的click事件,然而<div>元素和<body>元素的click事件也同时被触发了。因此,有必要对事件的作用范围进行限制。

    移除事件

    在绑定事件的过程中,不仅可以为同一个元素绑定多个事件,也可以为多个元素绑定同一个事件。

    unbind(type [,data])     //data是要移除的函数

        $('#btn').unbind("click"); //移除click

        $('#btn').unbind(); //移除所有
        对于只需要触发一次的,随后就要立即解除绑定的情况,用one()

        $('#btn').one("click",function(){.......});
        模拟操作

        可以用trigger()方法完成模拟操作。

        $('#btn').trigger("click");
        $('#btn').click();

        触发自定义事件

        $('#btn').bind("myclick",function(){....});

        $('#btn').trigger("myclick");
        传递数据

        trigger(type [,data])

        $('#btn').bind("myclick",function(event,message1,message2){...........});

        $('#btn').trigger("myclick",["传给message1","传给message2"]);

        执行默认操作
        $("input").trigger("focus");

            //不仅会触发input元素绑定的focus事件,还会触发默认操作——得到焦点。

        $("input").triggerHandler("focus");

            //只触发绑定事件,不执行浏览器默认操作

        其他用法

        绑定多个事件类型

        $("div").bind("mouseover mouseout",function(){.....});

        添加事件命名空间

        $("div").bind("click.plugin",function(){......});

        在所绑定的世界类型后面添加命名空间,这样在删除事件时只需要指定命名空间即可。

            $("div").unbind(".plugin");   //删除空间内的事件

        $("div").trigger("click!"); //触发所以不包含在命名空间中的click方法

        如果包含在命名空间的也要触发:

            $("div").trigger("click");

  • 相关阅读:
    单调栈问题解析
    Linux进程状态切换
    Shell编程小例子
    Linux之shell编程
    树的遍历框架
    你真的会求1-100有多少个素数吗
    java实现LRU算法
    从上到下打印二叉树 III
    从上到下打印二叉树I
    模拟盘电路板调试过程中出现的问题
  • 原文地址:https://www.cnblogs.com/fangyan-fight2015/p/5520869.html
Copyright © 2020-2023  润新知