一个关于绑定带参事件和解绑的问题
来源:5-11 开发路由(删除博客路由和登录路由)
慕村3232222
2019-04-16
老师,我想问一个绑定事件和解绑的问题,我用addEventerListener绑定了一个带参事件处理函数,可我无法解绑。想请老师帮帮忙
/*本地图片的点击事件监听处理函数*/ function clickEventHandleAttachedToImg(index) { /*每点击对应的图片,获得她的src属性,改变resultCover的background-image属性,实现效果*/ console.log('内部index: ', index); var URL = listContentImages[index].getAttribute('src'); resultCover.style.backgroundImage = 'url(' + URL + ')'; /*每一次点击将所有图片的list-img-selected去掉*/ for(var i = 0; i < listContentImages.length; i++){ listContentImages[i].setAttribute('class', 'list-img'); } listContentImages[index].setAttribute('class', 'list-img list-img-selected'); /*每点击依次图片, 将发送一个get请求给server端*/ toggleAll(); hideSummary(); requestServer(localImagePath[index], undefined, function(result) { renderAll(result); toggleAll(); showSummary(); }) } /*给本地图片绑定点击事件监听器*/ function addClickEventToImg() { listContentImages.forEach(function(ele, index) { listContentImages[index].addEventListener('click', clickEventHandleAttachedToImg.bind(this, index), false) }) } /*去掉其上的事件处理函数*/ function removeClickEventToImg() { listContentImages.forEach(function(ele, index) { listContentImages[index].removeEventListener('click', clickEventHandleAttachedToImg, false) }) }
写回答
1回答
-
关键是你函数中需要传入 index ,而 index 是父作用域的,形成了闭包,这就没法解绑了。
022019-04-16
相似问题
关于项目实际上线的问题
回答 1
关于进程
回答 2