将jQuery方法绑定到通过Ajax调用加载的Html

我有从ajax调用加载的内容,但我想将自定义方法(不是事件)绑定到dom元素以实现某些function。

我在网上找到的大多数解决方案都是绑定到页面的事件

$(".example").ajax({ 'success': function(data) { something() } }) 

我希望实现像’加载内容’之类的东西,因为那里没有事件。

 $('.post').live('load', function() { ..... }); 

考虑.ajaxComplete

http://api.jquery.com/ajaxComplete/

例如:

 // Normally you have an anonymous function. Make it a named function. function myInitialize(scope) { $('.button', scope).button(); } // Call it in document ready to initialize stuff that loaded in the page. $(myInitialize(null)); // Call it again in .ajaxComplete // 'this' is the div that loaded or has new content. $('*').ajaxComplete(myInitialize(this)); 

1)将所有绑定函数放在函数中…

2)现在在$(document).load()中调用此函数,以及ajax的成功函数,通过它将html添加到DOM

注意* – 在Success方法中调用此函数是必要的,因为ajax是同步的,只有在响应到来之后才调用success方法,因为如果在向DOM添加html后调用这些函数将被绑定

根据文件:

.live(eventType,eventData,handler)

eventType包含JavaScript事件类型的字符串,例如“click”或“keydown”。 从jQuery 1.4开始,字符串也可以包含多个空格分隔的事件类型或自定义事件名称

eventDataA将传递给事件处理程序的数据映射。

handlerA在触发事件时执行的函数。

所以你应该这样做。 我不知道为什么不工作。 我邀请你查看这个旧答案。

如何在jQuery中制作实时自定义事件

我希望它有所帮助!

如果你有一个事件来绑定这个动作(如onclick),你可以使用live来完成这个…如果没有,试试livequery ,它允许你在元素出现时绑定一个动作(没有人必须点击任何地方的采取行动)

从我过去两天的经验来看,我了解到有多种方法可以实现您需要的function

最快的方法可能是使用自定义函数简单地处理您需要的数据,该函数将在您通过AJAX获取内容之前(或之后)调用并将其插入DOM

 $.ajax({ success: function(data) { // do anything with data here data = $(data).find('#my_div').addClass('red'); $('#element').append(data); // OR - do the neccessary amendments here $('#my_div').addClass('red'); } }); 

更简单 (但也许更慢)的方法可能是仍然使用livequery来操纵你需要的对象 – 但是,这种方法在设置不正确时会很慢

 $('#my_div').livequery(function() { $(this).addClass('red'); }); 

我建议阅读一些我在这里询问实时和实时查询时所获得的链接

我在使用Parched的ajaxComplete方法时遇到了麻烦,始终如一地为其提供了应用行为的正确目标(例如,AFAICT xhr.responseText不是文档的一部分,所以它不能被绑定),所以我提出了这种替代方法,这可能会有所帮助。

在我的所有ajax调用中,我使用complete:event来触发新html目标上的已知事件。 例如,facebox容器或pjax目标。

 // in my facebox ajax setup $.ajax({ ..., complete: function() { $('#facebox').trigger('end.facebox'); } } 

然后我分别对这个事件做出反应。

 $('*').live('end.facebox', function(e) { if (e.target == this) { apply_behavior(this); // in the style of Parched Squid's myInitialize } }); 

我很想听听建议/改进,但这似乎足以适应多种ajax方法/事件类型和目的地。