美文网首页
js中ajax请求数据之后的按钮事件失效

js中ajax请求数据之后的按钮事件失效

作者: 陳伟霆 | 来源:发表于2017-12-09 22:23 被阅读0次

    先说

    其实关注简书很久了,大半年了,但是自己总是忘记抽时间出来写下。

    嘻嘻今天决定开始写第一篇文章,以后遇到的问题解决之后都来这里分享下。[乖巧]

    发现问题

     这两天,我在学着用js的ajax绑定数据,一切都很正常,但是之后我遇到了一个bug,

    图一(更改前)

    1. 上面是我的初始化数据时候的一段点击事件,准备获取到一个id请求另一个页面,但是当我去点击的时候,无论怎么点击都是没有反应,什么样式都没有。

    2. 首先我去检测,就用了个alert去检测是否代码问题,后来发现毫没有弹出内容,之后检测我的选择绑定事件的元素是否错误,但最终发现都没有问题。

    3. 然后,我发现是,一个“事件委托”问题,就是ajax载入新的DOM之前js已经加载完毕了,事件就不会绑定到新的DOM上面,就像我上面的给#tab-span想绑定一个点击事件,但是最终是没有用的,

    解决问题

    后来我就给添加了一个事件委托,给要点击的元素绑定父元素


    图二(更改后)

        #1. 上面就是我修改过后的click事件,亲测可以的。

        #2. 给click事件重新绑定事件,加了委托。有点击事件的是#tab-span这个元素,我给绑定到父级".table-item"(这里可以是其他的父元素,比如body也可以),将事件委托。

        上面的原理就是:等事件冒泡到父元素再进行事件的处理。但是上面说的绑定到body,我本人不太建议,因为如果要是你的页面绑定几百个事件,就真的完蛋咯

        #3. 最后有个老版本的live绑定事件,但是在jquery1.9+之后就没有了,谨慎使用

    写在最后

    照着上面的委托,正常来说都是没问题的,如果有问题的话先看自己绑定的元素是否错了,还有父元素也是,

    当然这个只是说ajax请求数据之后的click事件失效,没有请求数据一般click事件正常像我第图一样写是不会失效的。

    如果有什么请教的可以留下哦,谢谢。

    相关文章

      网友评论

          本文标题:js中ajax请求数据之后的按钮事件失效

          本文链接:https://www.haomeiwen.com/subject/mkkpixtx.html