如何从addEventListener删除或重置以前的值?

时间:2016-02-14 14:03:10

标签: javascript jquery modal-dialog

让我们想象一下日历中的一个事件,当你点击它时,会出现一个带有几个按钮的模态窗口。以下代码正在运行,但是当我单击不同的事件时,将存储先前单击的事件的值,并使用这些先前的值多次调用函数FUNC_DELETE_EVENT(我需要仅使用上次单击的事件调用该函数):< / p>

的Javascript

 eventClick:  function(event) {
 document.getElementById("del_event").addEventListener("click",
     function() {
            func_delete_event(event.id); }, false); 
     },
}

模态

<button type="button" class="btn btn-default" id="del_event" >DELETE</button>

点击时调用的Javascript函数

function func_delete_event(idevent) {
    *//this is the function called several times with previous event ids*

     // Process to delete the event idevent

}

如何删除之前点击以仅使用上次点击的活动调用 func_delete_event功能

谢谢!

2 个答案:

答案 0 :(得分:0)

您将removeEventHandler完全相同的参数一起使用addEventListener

为此,请将事件处理程序设置为本地作用域函数

eventClick: function (event) {
    var element = document.getElementById("del_event");

    function handler() {
        element.removeEventListener("click", handler, false); // remove this click event handler
        func_delete_event(event.id);
    }

    element.addEventListener("click", handler, false);
},

答案 1 :(得分:0)

您的函数必须具有名称且必须是全局的,才能在方法removeEventListener中可见。 一种实现方式:

var myfunction;

//---------------------------------------
 eventClick:  function(event) {
 document.getElementById("del_event").addEventListener("click",
     myfunction = function() {
            func_delete_event(event.id); }, false); 
     },
}

function func_delete_event(idevent) {

document.getElementById(idevent).removeEventListener("click", myFunction);

}