为了账号安全,请及时绑定邮箱和手机立即绑定

jquery怎么用undelegate去掉用delegate为动态创建元素绑定的事件?

jquery怎么用undelegate去掉用delegate为动态创建元素绑定的事件?

慕婉清6462132 2019-04-10 20:48:53
其实是需要添加一次性事件,原本用one方法,就可以解决。实现这样的功能,如:name为abc开始的a元素第一次点击时输出它的内容$("a[name^='abc']").one(function(console.log($(this).html());));但是one方法不支持动态创建的元素。所有用delegate$(document).delegate("a[name^='abc']","click",function(){console.log($(this).html());//这里我需要点击一次后再删除此click绑定$(document).undelegate($(this),"click");//这句不管用$(this).undelegate("click");//也不管用//手册上说undelegate第一个参数需要指定一个单独的selector,//a[name^='abc']取到的是一个元素集,用它后会删除掉所有绑定。//没有被点过的也删除了。求解,我只需要被点一次后的元素删除click事件})
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

用on不要用delegate了
test
$('#target').on('click',function(){
varself=$(this);
alert(self.text());
self.off('click');
});
on包办现在和未来的元素,还可以指定范围,指定seletor,减少事件数量,提高遍历速度,棒棒哒。
bind,live,delegate在1.9后就已经不推荐了,现在只要一个on代替曾经所有~
以上
                            
查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 351 浏览
慕课专栏
更多

添加回答

了解更多

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信