kindlion
kindlion
  • 发布:2015-03-09 13:44
  • 更新:2016-07-02 22:24
  • 阅读:3280

通过getElementsByClassName注册长按事件,永远只触发最后一个!

分类:MUI

通过getElementsByClassName获取到dom集合,遍历集合元素给每个元素都添加一个长按事件,但是触发的时候永远都只触发最后一个!或者说,长按的时候,无法获取到当前长按的那个dom节点!
var groups = document.getElementsByClassName("tabgroup-class");
console.log("分组个数:"+groups.length);
for(var i=0;i<groups.length;i++){
var temp = groups[i];
temp.addEventListener("longtap",function(){
childEventFlag = true;
mui.toast(temp.getAttribute("title",""));
var btnArray = ['修改','删除分组','取消'];
mui.prompt('请输入分组名称:','','更新分组',btnArray,function(e){
var groupId = temp.getAttribute("title","");
console.log("groupId:"+groupId);
if(e.index==0){
if(e.value == ""){
mui.toast("分组名不能为空!");
}else{
updateGroup(groupId,e.value);
}
}else if(e.index == 1){
mui.toast("删除!");
delGroup(groupId);
}else{
mui.toast("取消!");
}
childEventFlag = false;
});

		});  
	}
2015-03-09 13:44 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

建议使用on委托代理实现,而不是给每一个都增加一个事件

kindlion

kindlion (作者)

已经解决了。。。。。原来是我的js的问题,这个地方的temp被覆盖,应该直接用this.getAttribute("title")。

一刀大叔

一刀大叔

//注册长按事件,list下面的所有img都支持长按事件
mui('#list').on('longtap', 'img', function(e) {
console.log("注册长按事件");
//alert(JSON.stringify(files));
var num = this.id; //获取点击该标签的值
// alert(num); //用于测试,显示该值
var btnArray = [{
title: "删除文件"
}];
plus.nativeUI.actionSheet({
title: "操作列表",
cancel: '取消',
buttons: btnArray
}, function(e) {
var index = e.index;
//alert(files.length);
if (e.index === 1) {
document.getElementById(num).src="";
document.getElementById(num).width = "";
document.getElementById(num).height = "";
document.getElementById(num).style.visibility = "hidden";

					 for (var temp = 0 ; temp < files.length; temp ++) {    
				        if (files[temp].id === num ) {    
				          files.splice(num,1);  //删除选中的图片  
				        }    
				    }  
					 var list = document.getElementById("list");  
						list.innerHTML = "";  
						for (var i = 0; i < files.length; i++) {  
							list.innerHTML += '<img id="'+files[i].id+'"  src="' + files[i].path + '" data-preview-src="" data-preview-group="1"  style="height: 70px;width: 70px;margin-left:5px;" />'  
						}  
					}  
				});  
	});

该问题目前已经被锁定, 无法添加新回复