我有从ajax调用加载的内容,但我想将自定义方法(不是事件)绑定到dom元素以实现某些功能。
我在网上找到的大多数解决方案都是绑定到页面的事件,如
$(".example").ajax({
'success': function(data) {
something()
}
})
我想实现“加载内容”之类的东西,因为那里没有事件......
$('.post').live('load', function() {
.....
});
答案 0 :(得分:2)
考虑.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 :(得分:1)
1)将所有绑定函数放在函数中......
2)现在在$(document).load()中调用此函数,以及将jtml添加到DOM的ajax的成功函数
注意* - 在Success方法中调用此函数是必要的,因为ajax是同步的,只有在响应到来之后才调用success方法,因为如果在向DOM添加html后调用这些函数将被绑定
答案 2 :(得分:0)
根据文件:
.live(eventType,eventData,handler)
eventTypeA包含的字符串 JavaScript事件类型,例如“点击” 或“keydown。”截至jQuery 1.4 字符串可以包含多个, 以空格分隔的事件类型或 自定义 事件名称 ,以及。
eventDataA将是数据的地图 传递给事件处理程序。
handlerA在。执行的函数 触发事件的时间。
所以你应该这样做。我不知道为什么不工作。我邀请你查看这个旧答案。
How to make live custom events in jQuery
我希望它有所帮助!
答案 3 :(得分:0)
如果你有一个将这个动作绑定到的事件(比如onclick),你可以使用live来完成这个...如果没有,试试livequery,它允许你在一个元素出现时绑定一个动作(没有人必须点击任何地方才能触发动作)
答案 4 :(得分:0)
从我过去两天的经验来看,我了解到有多种方式来实现您需要的功能
最快方式可能是使用自定义函数简单地处理您需要的数据,该函数将在您通过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');
}
});
$('#my_div').livequery(function() {
$(this).addClass('red');
});
答案 5 :(得分:0)
我遇到了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方法/事件类型和目的地。