什么是事件监听

当用户在界面上执行一个操作,例如按下键盘、拖动或者单击鼠标时,都将产生一个事件。类似的DOM事件如:onclick、onmouseover、onmouseout、onkeydown、onkeyup、onkeypress、onload、onselect、onchange、onchange、onfoucs、onblur等等。那么,我们对这些事件进行监听就叫做事件监听。

on() 和 click() 的区别

二者在绑定静态控件时没有区别,但是如果面对动态产生的控件,只有 on() 能成功的绑定到动态控件中。

自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。该方法给
API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。

语法

$(selector).on(event,childSelector,data,function)

 

代码

$('#target').on('click',function(event){
    console.log('target');
});

 

说明 

参数描述
event 必需。事件对象。规定要从被选元素移除的一个或多个事件或命名空间。由空格分隔多个事件值,也可以是数组。必须是有效的事件。
childSelector 可选。规定只能添加到指定的子元素上的事件处理程序。
data 可选。规定传递到函数的额外数据。当一个事件被触发时要传递event.data给事件处理函数。
function 可选。事件回调函数。规定当事件发生时运行的函数。

注意:on前面的元素必须在页面初始化的时候就存在静态页里面。

事件监听与事件委托

$("#id").on("click",function() {
   // 事件监听:只能监听页面已有元素所绑定的事件
});
$(document).on('click', '.xxx', function() {
   // 事件委托:对于动态绑定元素可以这样写,委托给父元素进行事件监听代理
});
$("#parentNode").on('click', '#children', function() {
   // document可以改成要绑定事件元素的父节点
});

 

多个事件绑定同一个函数

$("#id").on("click dbclick",function() {
   // 同时绑定单击和双击事件
});

 

多个事件绑定多个函数

$("p").on({

    mouseover:function(){····},  

    mouseout:function(){····}, 

    click:function(){····}  

  });

 

为事件传递额外数据

function handlerName(event) {
  alert(event.data.msg);
}

$(document).ready(function() {
  $("p").on("click", {msg: "You just clicked me!"}, handlerName)
});

 

posted on 2019-05-17 14:53  FuYingju  阅读(260)  评论(0编辑  收藏  举报