Javascript 如果函数有参数,如何删除事件侦听器?

Javascript 如果函数有参数,如何删除事件侦听器?,javascript,jquery,addeventlistener,removeeventlistener,Javascript,Jquery,Addeventlistener,Removeeventlistener,我将在函数中添加一个侦听器,但在此之前,我将删除任何旧的侦听器。我认为删除不起作用,因为它在单击侦听器函数后一直调用它两次 function remove_this_rfid(rfid_id, loc_id) { let delete_rfid_button = document.getElementById("confirm_delete_rfid_id"); delete_rfid_button.removeEventListener("click&q

我将在函数中添加一个侦听器,但在此之前,我将删除任何旧的侦听器。我认为删除不起作用,因为它在单击侦听器函数后一直调用它两次

 function remove_this_rfid(rfid_id, loc_id) {
  let delete_rfid_button = document.getElementById("confirm_delete_rfid_id");
  delete_rfid_button.removeEventListener("click", remove_this_rfid_confirm);
  delete_rfid_button.addEventListener('click', function() {
    remove_this_rfid_confirm(rfid_id, loc_id);
  }, false);
}

function remove_this_rfid_confirm(rfid_id, loc_id) { 
  //this function has an Ajax call, which is executed twice when I click on the button after the first time
}

我发现了一个更好的解决方案,使用纯JS:

 var delete_rfid_button = document.getElementById("confirm_delete_rfid_id");
 delete_rfid_button.removeAttribute("onclick");
 delete_rfid_button.setAttribute('onclick', 'remove_this_rfid_confirm('+rfid_id + ','+ loc_id+')');
它还使代码不那么麻烦