今天在写项目的时候,用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");
});
}