我希望我的应用程序中的所有AJAX加载内容都由我的应用程序JQuery脚本进行评估,与正常加载的内容相同。例如JQuery扫描选择器的AJAX加载内容,如'模态框链接'等。
我的所有JavaScript都在普通的document.ready中,适用于普通的HTTP加载页面:
$(document).ready(function(){
// my apps javascript
});
我想使用类似.ajaxComplete的东西来重新运行document.ready中包含的所有内容,以评估jquery选择器的新加载的AJAX内容。
$(document).ajaxComplete(function(){
// Re-run all my apps javascript
})
我可以在.ajaxComplete中添加一些代码来执行此操作吗?
希望这有道理,如果没有,请告诉我,我会编辑问题详情。
答案 0 :(得分:12)
你可以将document.ready
中的所有内容封装到一个函数中,然后再次调用该函数重新绑定
...或
更好的方法是利用live()
和delegate()
jQuery方法,以便匹配这些选择器的所有当前和未来元素也将绑定到这些事件。
使用live()
:http://api.jquery.com/live/
$('.clickme').live('click', function() {
//all elements that exist now and elements added later
//with this class have this click event attached
});
使用delegate()
:http://api.jquery.com/delegate/
$("table").delegate("td", "hover", function(){
//all current and future td elements in all current tables
//have this hover event attached
});
答案 1 :(得分:1)
您需要做的是在函数中定义代码而不是匿名。匿名函数不可重用,但如果编写函数,则该函数可以绑定到多个事件。