ajax动态拼接html数据,Ajax动态拼接HTML,JS失效的解决——Jquery的事件委托

晚上用Ajax拼接动态生成的html到页面时,遇到JS中的方法失效的问题,可是头疼。

原因是Ajax在载入新的dom之前就已经把页面的JS加载完了,再执行事件时,没有绑定到新载入的dom上。

这时候就需要利用Jquery的事件委托。

利用事件委托的话,只需要给父级绑定一个事件监听,即可让每个li都绑定上相应的事件。

简单来说就是:

$("父元素").on("click","子元素",function(){

//执行代码

})

结合实例:

jsp页面:

  • ${chatFriend.uname}

    ${chatFriend.mcontent}

    ${chatFriend.count}

之前的JS:

$(".user_list li").dblclick(function(){

var image = $(this).find("img").attr("src");

var name = $(this).find(".chat-friend-name").text();

var receiverId = $(this).attr("data-id");

$(this).find('.cue-circle').hide();

alertChatBody(image, name, receiverId);

});

双击页面中的每一个li是能够执行JS函数的。

现在需要再拼接一个li,利用ajax动态拼接:

function setChatList(msender,mcontent,count){

$.ajax({

url:'selectUserById.action',

type:'post',

data:{msender : msender},

dataType:'json',

success:function(data){

var fulogo = data.ulogo;

var funame = data.uname;

var str = '

'

+ '

+ ''%20+%20fulogo%20+%20''

+ '

'

+ ''

+ funame + ''

+ ''

+ mcontent

+ '

'

+ count + '

';

$(".user_list").append(str);

}

});

}

拼接完成后,页面确实多了一个li,但是当我再双击新添的li时,js代码不执行。

利用Jquery的事件委托解决:

$(".user_list").on('dblclick','li', function(){

var image = $(this).find("img").attr("src");

var name = $(this).find(".chat-friend-name").text();

var receiverId = $(this).attr("data-id");

$(this).find('.cue-circle').hide();

alertChatBody(image, name, receiverId);

});

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值