jquery未来元素事件绑定问题

发布于 2021-11-27 20:42:49 字数 88 浏览 842 评论 10

jquery未来元素事件绑定遇到问题,本来应该使用on 和live delegate去解决,但是未来元素是经过ajax请求后异步添加到页面中的,导致事件绑定失败,有什么办法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

如日中天 2021-12-01 15:12:55

你这就是事件委托的问题,jQuery支持两种方式,live和on的事件委托。

事件委托案例:http://runjs.cn/code/fh3uc0nu

在jQuery 1.7以后对于live的官方已经不推荐使用,后续的有些版本中已经移除。

温柔少女心 2021-12-01 15:12:45

动态(未来)的dom事件注册用on是肯定的。

在父元素上注册事件也是肯定的。

原理是动态添加的子元素的事件会冒泡到父元素,然后on方法第二个参数过滤到真正要处理的元素时触发事件回调方法。

如果不管用,看是不是动态的子元素上阻止了事件的传播冒泡,如:event.preventdefault()

然后如果父元素级别比较高,看看是不是中间的父元素阻止事件冒泡了。

还有看看父元素上是不是事件注册覆盖了(注册了多个相同的事件,如果是这样可以搜索:jquery 事件命名空间看看)

推荐在直接父级注册(当然这个父级不能是动态的),使用#id选择器。

网名女生简单气质 2021-12-01 15:12:39

如果是你动态添加的,自然也需要重新注册一下事件。

清欢 2021-12-01 15:12:33

引用来自“浮生壹日”的评论

$(parent-node).on(event-type,future-node,event-function)

parent-node一定要在页面上,不能是ajax请求的了

试试

风透绣罗衣 2021-12-01 15:12:14

$(body).on()我试过了,确实不行,主要元素是ajax请求后加入的,而我绑定事件的js写在ajax请求之前,所以考虑未来元素事件绑定,需求有些特殊,所以现在尴尬了 - -

笑红尘 2021-12-01 15:06:19

$(body).on('click','.future',function(){
    //TODO
});

躲猫猫 2021-12-01 15:01:40

应该用不了未来事件绑定了,

建议ajax请求完成,加载成功之后,再绑定一次。

凌乱心跳 2021-12-01 14:59:41
$(document).on('click','.future',function(){
    //TODO
});

女中豪杰 2021-11-29 11:45:03

正解,保证parent-node是ajax加载html的父节点,那么ajax加载到的html也可以被监听。

奈何桥上唱咆哮 2021-11-29 05:27:29

$(parent-node).on(event-type,future-node,event-function)

parent-node一定要在页面上,不能是ajax请求的了

试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文