在ajax post之后执行document.ready

Jas*_*ost 26 ajax jquery post document-ready ruby-on-rails-3

我有一个custom.js文件,其中有几个元素,其中包含click和其他绑定方法.整个文件封装在document.ready()中,一切正常.但是,当我做一个AJAX帖子时,显然document.ready()永远不会再为当前页面触发.无论如何我可以再次触发document.ready()或者我需要让命名函数中的所有内容从create.js.erb中调用它们吗?

Ben*_*Ben 35

您可以随时将所有内容放在一个函数中(命名为loadfunction或其他),并在文档加载时调用该函数,并在加载ajax时再次调用该函数.虽然它是一个被黑客攻击的解决方案,但它应该运行得很好.

所以然后 把它$(document).onready(function () { 和它的末端括号之间的所有内容}放在它的function OnloadFunction () {结尾处}.然后把$document.onready(OnloadFunction);

示例:你有

$(document).ready(function () {alert("test");});
Run Code Online (Sandbox Code Playgroud)

它会变成:

function OnloadFunction ()
{
    alert("test");
}
$(document).ready(OnloadFunction);
Run Code Online (Sandbox Code Playgroud)

然后你可以随时打电话OnloadFunction.

  • 把代码放在单词上,就像`$(document).ready(function DocReady() { ... });` (2认同)

Ken*_* Mc 19

结合Ben和fotanus的答案,我创建了以下模式:

$(document).ready(function () {
    AjaxInit()
});

$(document).ajaxComplete(function () {
    AjaxInit()
});

function AjaxInit() {
    alert("test");
}
Run Code Online (Sandbox Code Playgroud)


fot*_*nus 18

每次ajax调用后都会触发一个事件.它被称为ajaxComplete.

$( document ).ajaxComplete(function() {
    $( ".log" ).text( "Triggered ajaxComplete handler." );
});
Run Code Online (Sandbox Code Playgroud)