jquery on()绑定事件无效

今天在做项目的过程中遇到了jquery 动态生成的元素绑定事件的问题。


首先我目前所了解的是

(1)用bind或者直接给元素加事件(例如click)这种的是对于页面初始化就有的元素

(2)对于后面动态生成的元素无效,例如append(某动态生成元素),这种用以上的方法无效


为了使动态生成的元素能绑定事件,我网上查了一番,听说on可以动态绑定事件,我试了一下没有效果,纠结了很久,最终发现原因。

jquery使用on绑定事件到动态生成的元素上时,不能对动态生成的对象操作,需要从其父节点追溯到本身。

下面是js:

//有效,追溯到本身
$('#centerUlList').on("click","li",function(){
 	    $('input[name="godate"]').val($(this).attr("date"));
 	    searchform.action="searchsimple.action";
 	    searchform.submit();
}); 

//无效                                               
$('#centerUlList li').on("click",function(){
 	    $('input[name="godate"]').val($(this).attr("date"));
 	    searchform.action="searchsimple.action";
 	    searchform.submit();
}); 


综上动态生成的元素绑定事件用on要注意 追溯到元素本身,另外一点on的性能高于live(),bind(),delegate()等方法。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值