一个关于绑定带参事件和解绑的问题

来源:5-11 开发路由(删除博客路由和登录路由)

慕村3232222

2019-04-16

老师,我想问一个绑定事件和解绑的问题,我用addEventerListener绑定了一个带参事件处理函数,可我无法解绑。想请老师帮帮忙

http://img.mukewang.com/szimg/5cb5cf8700016db413140864.jpg

        /*本地图片的点击事件监听处理函数*/
        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回答

双越

2019-04-16

关键是你函数中需要传入 index ,而 index 是父作用域的,形成了闭包,这就没法解绑了。

0
2
双越
回复
慕村3232222
不客气。感觉课程有帮助的话,麻烦去给一个好评哈。
2019-04-16
共2条回复

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4051 学习 · 2006 问题

查看课程