通过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;
});
});
}
3 个回复
DCloud_UNI_FXY
建议使用on委托代理实现,而不是给每一个都增加一个事件
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";