jquery ajax拼接html,Ajax動態拼接HTML,JS失效的解決——Jquery的事件委托

本文探讨了使用Ajax动态加载HTML内容时遇到的JS事件绑定失效问题,并介绍了如何通过JQuery的事件委托机制来解决这一难题,确保新加载的DOM元素能够正确响应事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

晚上用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);

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值