在ajax加载的内容上重新运行应用程序Javascript

Dav*_*low 11 javascript jquery

我希望我的应用程序中的所有AJAX加载内容都由我的应用程序JQuery脚本进行评估,与正常加载的内容相同.例如,JQuery扫描选择器的AJAX加载内容,如'模态框链接'等.

我的所有JavaScript都在普通的document.ready中,适用于普通的HTTP加载页面:

$(document).ready(function(){
  // my apps javascript
});
Run Code Online (Sandbox Code Playgroud)

我想使用类似.ajaxComplete的东西来重新运行document.ready中包含的所有内容,以评估jquery选择器的新加载的AJAX内容.

$(document).ajaxComplete(function(){
  // Re-run all my apps javascript
})
Run Code Online (Sandbox Code Playgroud)

是否有一些我可以放入.ajaxComplete的代码来执行此操作?

希望这是有道理的,如果没有,请告诉我,我会编辑问题详情.

hun*_*ter 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
});
Run Code Online (Sandbox Code Playgroud)

示例使用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
});
Run Code Online (Sandbox Code Playgroud)

  • 从jQuery 1.7开始,不推荐使用.live()方法.使用.on()附加事件处理程序.旧版jQuery的用户应该使用.delegate()而不是.live(). (2认同)