ajax动态添加的元素 增加两个点击事件

qq_34921650 2016-10-20 03:52:22

$(window).load(function() {
var c = localStorage.getItem("tsid");
$.ajax({
type: 'post',
url: NewBollUrl + get_requirement,
data: {
id: c
},
cache: false,
dataType: 'json',
success: function(data) {
if (data.msg == '0') {
layer.msg("<?php echo L('pleaseadd');?>");
} else {
$.each(data, function(k, v) {
if (v.price == "0.00") {
$("#label").append('<label class="label label-info mr5" style="display: -webkit-inline-box;padding:5px;" id=del' + v.label_id + ' ng-repeat="tag in data.tags" onclick="delrequirement(' + v.label_id + ')">' + v.name + '</label>');
} else {
$("#label").append('<label class="label label-danger mr5" style="display: -webkit-inline-box;padding:5px;" id=del' + v.label_id + ' ng-repeat="tag in data.tags" onclick="delrequirement(' + v.label_id + ')">' + v.name + ':' + v.price + '元</label>');
}
});
}
},
error: function() {}
});
});

这是之前点击删除的事件
现在想动态的在label标签上添加单击事件和双击事件



var TimeFn = null;
$('#label').on('click','label',function(){    //动态事件绑定 为页面所有的label添加一个事件 包括新增的节点
// 取消上次延时未执行的方法
clearTimeout(TimeFn);
//执行延时
TimeFn = setTimeout(function(){
//do function在此处写单击事件要执行的代码
alert($(this).html());
},300);
});

//定义setTimeout执行方法
$('#label').on('dblclick','label',function(){    //动态事件绑定 为页面所有的label添加一个事件 包括新增的节点
// 取消上次延时未执行的方法
clearTimeout(TimeFn);
//双击事件的执行代码
alert('23');
});

这是我自己写的但是弹出的是Null
望大神指教啊!
...全文
269 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 qq_34921650 的回复:
之前的写法setTimeout的function里的this指向的不是你想要的label,应该是指向window了 var $this=$(this); 在外面声明一下,function里再用$this才是你想要的label, 再深入的话点链接看这个吧
qq_34921650 2016-10-20
  • 打赏
  • 举报
回复
引用 4 楼 u011376884 的回复:
[quote=引用 3 楼 qq_34921650 的回复:]

$this.attr("id");
可以获取啊……[/quote] 恩 我天 太差劲了 我的恶补这些知识了 我先结贴了 麻烦可以给我讲下$this=$(this),不可以直接声明this吗?
  • 打赏
  • 举报
回复
引用 3 楼 qq_34921650 的回复:

$this.attr("id");
可以获取啊……
qq_34921650 2016-10-20
  • 打赏
  • 举报
回复
引用 2 楼 u011376884 的回复:

clearTimeout(TimeFn);
		var $this=$(this);
	      //执行延时
	      TimeFn = setTimeout(function(){
	          //do function在此处写单击事件要执行的代码
	         alert($this.html());
	      },3000);
恩 确实是重声明就可以弹出,但是我想要就是把label_id动态的带上,就是要明确的知道每个的id,这个怎么写呢 大神
  • 打赏
  • 举报
回复

clearTimeout(TimeFn);
		var $this=$(this);
	      //执行延时
	      TimeFn = setTimeout(function(){
	          //do function在此处写单击事件要执行的代码
	         alert($this.html());
	      },3000);
qq_34921650 2016-10-20
  • 打赏
  • 举报
回复
实现的效果就是单击为删除该标签 双击为修改该标签的内容

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧