ajax动态加载的数据的click事件问题

转载地址:https://blog.csdn.net/DreamFJ/article/details/75365123

问: 

为什么ajax加载出来的html,无法用选择器绑定事件,但可以直接在html上使用onclick等事件?

如ajax 加载了<div class="div">div</div> 
然后$('.div').click(function(){.....});click操作无效

但是如果加载 <div onclick=dofun("prameter")>div</div> 
dofun 就可以被onclick触发。

答: 
因为先后顺序的关系啊~用AJAX加载是异步加载这个应该很清楚吧~既然是异步加载那么就是非同步的,也就是说当你的整个页面加载完成后$('.div').click(function(){.....});这句根本找不到你异步加载的DIV,所以它就不会执行了,即使你之后再把<div class="div">div</div>这个加载进来,在浏览器也不会找到这个DIV的,因为浏览器在第一次加载的时候没有找到它,并且浏览器在你加载进这个DIV来之后也不会重新渲染一次,所以找不到。

而你加载进来的<div onclick=dofun("prameter")>div</div>,是它去找的这个函数,而dofun这个函数是之前就被浏览器渲染过了,只是还没有调用,而你新加载进来的DIV正好要调用之前就已经渲染好的函数,所以就可以使用了~

主要还是异步和同步区别的关系~

其他答案: 
(1)在html骨架加载完成 js初始化的时候,并不存在<span class="add">节点,所以他的绑定事件是无效的,可以将该事件绑定到document上通过这种事件委托的机制实现绑定 试试:$(document).on('click','span.add',function(){ ....});

(2)动态加载的数据中的某一标签是不能直接用$(“标签”).click事件的,可以用on、live、或者直接在标签里面写他的onclick事件!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值