2014-06-16 76 views
1

我需要一种方法来使用jQuery .live()函数来处理通过ajax加载的元素。jquery .live on load函数

例如,一个div通过AJAX .load()

通常我们使用.live()与事件处理Ajax加载的数据,但我需要处理这个div上的每个ajax的数据加载与加载事件时加载。

下面是我的代码不工作,但我想要做这样的事情:

$('#hidden').live('load',function(){ 
     hiddenInfo = $('#hidden').text(); 
    }); 
+1

+1:这实际上不是一个坏问题。很多人想知道什么时候有* Ajax加载*,但以通用的方式知道。 –

+0

你知道'.live()'已被弃用并从jQuery中移除,对不对? – jfriend00

回答

0

做些事情就好在AJAX回调一旦它的加载,如:

success: function(data) { 
    $("#hidden").html(data); 
    hiddenInfo = data.text; //or whatever 
} 

或者在全局AJAX完成事件中挂钩,以便每次AJAX事件结束时执行某些操作。

3

一个更普遍的做法是广播自定义事件,阿贾克斯成功事件里面,使用trigger所以你可以使用on(优先于live,请);

success: function(data) { 
    $("#hidden").html(data); 
    $("#hidden").trigger("panelloaded"); // Just pick a name not already used 
} 

然后你就可以有

$('#hidden').on('panelloaded',function(){ 
    hiddenInfo = $('#hidden').text(); 
}); 

或委托的版本,如果元素本身可以改变:

$(document).on('panelloaded', '#hidden', function(){ 
    hiddenInfo = $('#hidden').text(); 
}); 

从理论上讲,你可以使用“负载”的事件名称(并且根本不改变你的代码),但是我不确定你可能有什么其他冲突,因为load就是这样一个常见术语。