一个关于绑定带参事件和解绑的问题
来源: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