近来遇到一个问题,通过AJAX方式返回的结果,jquery的 document .ready 属性不起作用。document .ready是在DOM完全加载成功后执行,但是通过AJAX返回结果后,DOM已经加载完了,所以不会触发里面的javascript代码。
比如下面一段代码
if(Drupal.jsEnabled) {
$(document).ready(function(){
$('a.un-pulish-num').livequery("click",function(){
var successfunction = function(data){
$('div.un-pulish-class'+data.nid).html(data.message);
$('#num-'+data.nid).fadeOut();
};
$.ajax({
type: 'POST',
url: this.href,
dataType: 'json',
success: successfunction,
data: 'js=1'
});
return false;
});
});
}
它的作用是通过点击事件,动态更新结果。这个点击事件在页面第一次加载时,是有效果的,但是通过AJAX方式产生的结果,再点击就会失效了。
Jquery 1.3.x 增加了一个live方法,据说可以解决这个问题,写法如下,