2010-04-30 58 views
2

我已经使用.live()和.bind('ajaxComplete')来完成某些相关任务,但是我发现自己希望能够侦听特定DOM元素的'complete'事件,该元素将调用jQuery .load()在不同的时间。订阅特定DOM元素上.load()的'complete'事件?

在这种情况下,我不想全局侦听所有完整的事件(除非有人可以告诉我如何从'ajaxComplete'返回的事件对象中获取正确的目标)。我希望能够做这样的事情:

$('.selector').load('url.php',{data:data},function(){ 
    // LOCAL complete function 
}); 

,然后在其他地方,附加处理程序以侦听,并执行一些其他代码每当Ajax调用火灾完成:

$('.selector').bind('complete',function(){ ... }); 

我我知道我可以使用上面指出的“LOCAL完整函数”来附加某些功能,但我希望能够从代码中的其他位置绑定到完整的事件 - 就像我对其他事件(如'点击”。

有没有办法做到这一点?或者我必须总是在load()方法的上下文中使用'complete'事件吗?

回答

2

只是触发complete事件在当地完成回调:

$('.selector').load('url.php',{data:data},function(){ 
    $(this).trigger('complete'); 
    // Local handling of the complete event. 
}); 

$('.selector').bind('complete',function(){ ... }); 
+0

谢谢,这正是我需要!和这样一个不错的简单解决方案 – 2010-05-01 03:43:30

0

您已经接近您的示例,请参阅jQuery中的.load()文档。 http://api.jquery.com/load/

$('.selector').load('url.php',function() { 
    //Complete function 
}); 
+0

?根据文档,load()方法采用可选的数据对象参数。 .load(url,[data],[complete(responseText,textStatus,XMLHttpRequest)]) 编辑:对不起,如果问题不明确,编辑上面谢谢 – 2010-04-30 22:25:59