js 多个事件的绑定及移除(包括原生写法和 jquery 写法)

 

需要打开控制台查看效果:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js 多个事件的绑定及移除</title>
</head>
<body>


<button id="button">button</button>
<button id="unbind">unbind</button>

<script>
  window.onload = function() {
    var button = document.querySelector('#button');
    var unbind = document.querySelector('#unbind');

    // 1、使用匿名函数添加事件
    // 这种绑定没有办法移除, 除非移除全部 click 事件
    button.addEventListener('click', function(e) {
      console.log('click');
    });

    // 2、使用命名函数添加事件
    // 这种绑定方法可以通过函数引用作为参数移除
    button.addEventListener('click', click1);
    unbind.addEventListener('click', function(e) {
      button.removeEventListener('click', click1);
    });
  };

  function click1(e) {
    console.log('click1')
  }
</script>
</body>
</html>

  

点击 button 再点击 unbind,再点击 button,会在控制台看到如下输出:

也可以在 jsfiddle 查看:https://jsfiddle.net/rubys/xm0pa64n/14/

 

 

使用 jquery 的话,操作比较方便:

绑定:

$('xx').on('click.click_event', function() {});

  

取消绑定:

$('xx').unbind('click.click_event')

  

和我们平常写的区别是多了个 点号和点号后面事件的标识名。

 

如果用 jquery,我们上面原生写法可换成

// 以下是 jquery 绑定以及取消绑定事件的用法
  $(function() {
    // 绑定一个 click 事件
  	$('#button1').on('click', function(e) {
    	console.log('jquery button click');
    });
    
    // 绑定另外一个 click 事件(如果我们后面需要取消绑定的话,需要指定一个标识,这里是 test)
    $('#button1').on('click.test', function(e) {
    	console.log('jquery button click 1');
    });
    
    // 取消绑定 'test' click 事件
    $('#unbind1').click(function(e) {
      console.warn('jquery unbind');
    	$('#button1').unbind('click.test');
    })
  })

  

posted @ 2018-03-20 15:07  佚名000  阅读(5919)  评论(0编辑  收藏  举报