今天在写项目的时候,用Jquery的时候遇到一个问题,描述如下:
1) 我在载入a.html的同时,初始化a.html中的init(user,msgNum)方法
var init = function(user,msgNum){
$("#name").append(user.userName);
if(msgNum != 0) {
$("#name").append(" 新消息:<span id=\"msg_info\">("+msgNum+")</span>");
}
$("#msg_info").click(function() {
$("#msg_dialog").dialog("open");
});
} 在这个方法中,我为 name元素添加了一个新的span,id为msg_info。
2)然后,我想获取msg_info这个元素,执行它的.click()方法,
$("#msg_info").click(function() {
$("#msg_dialog").dialog("open");
}); 但是却发现根本不能取到msg_info这个元素,执行click方法。
最后想了一下,可能是因为init()方法在加载这个页面后是异步执行的,不确定什么时候能执行完,所以在init()外部调用init内部产生的msg_info元素,可能取不到。不过这只是我的猜测而已,希望以后学习中能彻底明白这个根源所在。
解决方法倒是很简单,将.click()放到init()方法体内部就行了,如这样:
var init = function(user,msgNum){
$("#name").append(user.userName);
if(msgNum != 0) {
$("#name").append(" 新消息:<span id=\"msg_info\">("+msgNum+")</span>");
}
$("#msg_info").click(function() {
$("#msg_dialog").dialog("open");
});
}
本文探讨了在使用JQuery时遇到的一个问题:通过异步方式添加DOM元素后,未能成功绑定点击事件。文章详细解释了问题出现的情景,并提供了一种简单的解决方案。
1700

被折叠的 条评论
为什么被折叠?



