JavaScript - 如何根据此函数的结构删除事件侦听器



如何删除此JavaScript函数中设置的事件侦听器?如果可能的话,我想从另一个功能中执行此操作?如果这是不可能的,那么从同一函数中就可以工作。

function _dtmCheckFundingEditLink() {

    function _dtmGetCurrentFundingAmount() {
        var currAmt = "NA";
        try {
            currAmt = sessionStorage.getItem("_dtmFundAmount");
        } catch (err) {
            return currAmt;
        }
        return currAmt;
    };

    editLink = document.querySelectorAll('.btn-grp-back');

    if (editLink != null) {
        editLink[2].addEventListener('click', function() {
            var clNm = s.pageName + ":" + _dtmGetCurrentFundingAmount() + ":edit";
            _dtmReportCL(clNm);
        })
    } else {
        setTimeout(_dtmCheckFundingEditLink, 1000);
    }
};

将事件侦听器调用的函数声明为单独的函数,而不是匿名函数:

function handler(){
  //handle event
}

添加事件侦听器:

.
.
.
if (editLink != null) {
        editLink[2].addEventListener('click', handler);
    } else {
        setTimeout(_dtmCheckFundingEditLink, 1000);
    }
.
.
.

现在,您可以从单独的函数中删除该处理程序:

 function sampleFunction(){
   editLink = document.querySelectorAll('.btn-grp-back');
   editLink[2].removeEventListener('click', handler); 
}

最新更新