请问 javascript 怎样获取已绑定事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问 javascript 怎样获取已绑定事件?相关的知识,希望对你有一定的参考价值。

想知道一个div 被绑定了哪些事件 通过什么方法可以获得?

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">
        /**
         * 此处代码必须放到任何javascript代码之前。另外增加事件只能用addEventListener形式。
         */
        (function() 
            Element.prototype.eventListenerList = ;
            Element.prototype._addEventListener = Element.prototype.addEventListener;
            Element.prototype._removeEventListener = Element.prototype.removeEventListener;
            Element.prototype.addEventListener = function(a,b,c) 
                this._addEventListener(a,b,c);
                if(!this.eventListenerList[a]) this.eventListenerList[a] = [];
                this.eventListenerList[a].push(b);
            ;
            Element.prototype.removeEventListener = function(a,b,c)
                this._removeEventListener(a, b,c);
                if(this.eventListenerList[a])
                    var arr = this.eventListenerList[a];
                    for(var i =0;i<arr.length;i++)
                        if(arr[i].toString() === b.toString())
                            this.eventListenerList[a].splice(i,1);
                        
                    
                
            
        )();
        //此后为测试代码。
        window.onload = function()
            var dom = document.getElementById("test");
            //增加三个监听
            dom.addEventListener("click",function()
                console.info("click function");
            ,false);
            dom.addEventListener("click",function()
                console.info("click function2");
            ,false);
            dom.addEventListener("click",function()
                console.info("click function3");
            ,false);

            console.log(dom.eventListenerList["click"].length);
            //读出监听的方法
            var clicks = dom.eventListenerList.click;
            if(clicks) clicks.forEach(function(f) 
                console.log("I listen to this function: "+f.toString());
            );
            //删除监听
            dom.removeEventListener("click",function()
                console.info("click function");
            ,false);
            
            console.log(dom.eventListenerList["click"].length);
        ;
    </script>
</head>
<body>
    <button id="test" >测试</button>
</body>
</html>

以上代码修改了原生的Element对象,是否需要这样做,请自己酌情处理。

望采纳!

参考技术A $("p").bind('click dblclick mouseover mouseout',function(event)
$("div").html("Event: " + event.type);
);
参考技术B $(obj).data("events")

javaScript事件绑定

事件绑定,就是要对某一个东西进行操作。(因为你想让他实现什么效果,所以就得绑定他,哈哈哈!)

要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数。所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称。

 

在JavaScript中,有三种常用的绑定事件的方法:

  1. 在DOM元素中直接绑定;
  2. 在JavaScript代码中绑定;
  3. 绑定事件监听函数。

1、用例子的形式来给大家解释一下,如何在DOM元素中直接绑定。

单击一个按钮,弹出警告框的代码

<input onclick="myAlert()" type="button" value="点击我,弹出警告框" />
<script type="text/javascript">
function  alert(){
alert("hello,我是警告框");
}
</script>

是不是很简单,然后继续吧...

2、在JavaScript代码中绑定(绑定事件可以使JavaScript代码与HTML标签分离,文档结构清晰,便于管理和开发)

<input id="demo" type="button" value="点击我,显示 type 属性" />
<script type="text/javascript">
document.getElementById("demo").onclick=function(){
alert(this.getAttribute("type")); // this 指当前发生事件的HTML元素
}
</script>

3、绑定事件监听,绑定事件的另一种方法是用 addEventListener() 或 attachEvent() 来绑定事件监听函数。

①.addEventListener(eventName,handle,useCapture)。

标准的绑定事件监听函数的方法

eventName 事件名称。注意,这里的事件名称没有“ on ”,如鼠标单击事件 click ,鼠标双击事件 doubleclick ,鼠标移入事件 mouseover,鼠标移出事件 mouseout 等。
handle 事件句柄函数,即用来处理事件的函数。
useCapture

Boolean类型,是否使用捕获,一般用false 。

 

②.attachEvent(eventName,handle);

elementObject DOM对象(即DOM元素)。
eventName 事件名称。注意,与addEventListener()不同,这里的事件名称有“ on ”,如鼠标单击事件 onclick ,鼠标双击事件 ondoubleclick ,鼠标移入事件 onmouseover,鼠标移出事件 onmouseout 等。
handle 事件句柄函数,即用来处理事件的函数。  










以上是关于请问 javascript 怎样获取已绑定事件?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript绑定事件跟解绑事件的兼容代码

jQuery的事件绑定和解绑

JavaScript绑定事件的方法[3种]

jquery如何绑定一个已有的方法并传递参数

JavaScript事件绑定的常见方式

JQjq动态绑定事件.on()解绑事件off()