原生javascript实现类似jquery on方法的行为监听

原生javascript有addEventListener和attachEvent方法来注册事件,但有时候我们需要判断某一行为甚至某一函数是否被执行了,并且能够获取前一行为的参数,这个时候就需要其他方法来实现了。

项目中的原始场景是有若干个tab切换,tab组件当然是已经写好的,现在需要每次点击后保存localstorage等其他操作,需要监听tab是否被点击。下面是简单的实现事件监听方法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件注册</title>
</head>
<body>
    <button id="test">点击</button>
    <script type="text/javascript">
    var BC=(function(){
         var attachFunctionList = {};
//事件通知
var notify=function(notifyName){ var args=Array.prototype.slice.call(arguments,1); attachFunctionList[notifyName].fun.apply(attachFunctionList[notifyName].scope,args); return this; }
//事件监听
var attach = function(notifyName, callback) { if(typeof notifyName ==="string"&&typeof callback==="function"){ attachFunctionList[notifyName]={ fun:callback }; } return this; } return { attach:attach, notify:notify } })(); var $test=document.getElementById("test"); $test.onclick=function(){ var name="hz"; BC.notify("clicked",name);//按钮点击后通知该事件已经发生了,并把当前参数传递过去 }
//监听到按钮被点击后进行其他操作 BC.attach(
"clicked",function(name){ alert("事件注册成功!参数是:"+name); }) </script> </body> </html>
原文地址:https://www.cnblogs.com/hutuzhu/p/4305318.html