zoukankan      html  css  js  c++  java
  • js事件绑定的几种方式与on()、bind()的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载

    一直不是很理解几种js事件绑定之间的区别与联系,今天百度了一下,在此做一总结:

    1.如果只是简单的绑定一个事件,可以直接写在行内,点击执行一个函数,例如 <button onclick="alert('点我啊!')">点我啊</button>

    2.也可以设置一个id 例如<button id="btn">点我啊</button><br>

    $('#btn').click(function(){

    })

    3.还可以写成这种格式,点击执行函数,但是函数写在外面,例如  btn1.onclick = demo; function demo(){ alert('打你干吗?'); }

    其实以上三种本质应该是一种,只是形式不一样

    对于多事件的绑定,我用的最多的就是on() 和 bind(),一下介绍一下它们的区别

    on的基本语法:on(events,[selector],[data],fn)

    events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" 。
    selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择器为null或省略,当它到达选定的元素,事件总是触发。
    data:当一个事件被触发时要传递event.data给事件处理函数。
    fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。

    如果只是一个简单的事件绑定如 $('button').on('click',function(){}); 与bind()无二样,与以上的几种方式也没有太多的区别

    如果是多个事件绑定到一个函数,或则多个事件绑定到多个函数,就需要用到on了:

    多个事件一个函数:

    $(document).ready(function(){
      $("p").on("mouseover mouseout",function(){
       alert("多个事件一个函数");
      });
    });

    多个事件绑定不同的函数

    $(document).ready(function(){
      $("p").on({
        mouseover:function(){$("body").css("background-color","lightgray");},  
        mouseout:function(){$("body").css("background-color","lightblue");}, 
        click:function(){$("body").css("background-color","yellow");}  
      });
    });

    on的第二个参数可以阻止一些情况下的冒泡,原理简单说就是用选择器来精确到匹配到你想执行函数的那个元素,而bind()就没有这个参数,因此在使用bind()时很可能产生冒泡

    很多资料上显示:bind() live() delegate()都是通过.on()来实现的,虽然不是很懂,但是在使用中我也是更喜欢使用on()

  • 相关阅读:
    AutoCAD LISP 循环选择语句cond
    AutoCAD LISP利用子程序绘制田字格
    java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListen
    java.lang.IllegalArgumentException: node to traverse cannot be null!
    扩展jQuery easyui datagrid增加动态改变列编辑的类型
    eclipse管理多个workspace(转载)
    JBPM4 No unnamed transitions were found for the task 'XXXX'
    MySQL 日期计算
    jbpm与spring整合不停显示查询语句select jobimpl0_.DBID_ as DBID1_6_, jobimpl0_.DBVERSION_ as DBVERSION3_6_......
    在可编辑datagrid中,使用my97日期控件
  • 原文地址:https://www.cnblogs.com/bluealine/p/7210428.html
Copyright © 2011-2022 走看看