手动调用jQuery document.ready函数

问题描述:

如果我发出AJAX请求并想调用$(document).ready()设置的所有函数。我该怎么做?谢谢手动调用jQuery document.ready函数

+0

请考虑标记正确的答案。 – Jeffrey 2012-01-16 21:03:30

最简单的方法是使用共享功能:

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

$.post('/', {}, function() { 
    setup(); 
}, 'json'); 

但是如果你用它来重新分配的听众,你可能将能够与他们分配到逃脱他们之前创建的,是这样的:

$(document).ready(function() { 
    $(document).delegate('.my-button', 'click', function() { }); 
}); 

使用此代码,所有.my-button点击将您的自定义函数来处理,无论在在domready中的DOM是否存在按钮。

需要注意的是:

  • $(document).ready(function() { ... });可最小化到$(function() { ... });
  • 如果你正在使用jQuery 1.7+,喜欢.on超过.delegate$(document).on('click', .my-button', function() { });
  • 体型较窄的范围内更广泛的上方,即$('#close-parent').delegate超过$(document).delegate

$(document).ready(); 

如果不行,试试这个:

function startup() { 

    // All your functions in here. 

} 

$(document).ready(startup); 

而且你的AJAX请求完成后:

startup(); 
+0

我认为这是你写的。我喜欢这个组合......只需要弄清楚你如何发送我的代表份额;) – musefan 2012-01-16 11:46:43

+6

你需要将对'startup'的引用传递给'ready'。目前您正在传递'startup'的返回值。 – 2012-01-16 11:46:50

代替手工触发的document.ready的(这将是不好的做法恕我直言),做一个功能,这就是所谓setup设置所有听众等,并调用此功能,当你需要重新申请的东西等

+0

谢谢,当然,但我有几个js文件包含在那里和几个电话$(),所以它需要一段时间将它们分为启动功能... – idm 2012-01-16 11:50:28

+0

我想到的是建立一个全球性的“设置函数数组“,您可以将每个函数添加到需要执行的函数中,在您的设置函数中,您只需遍历该数组并执行每个函数,这对您有用吗? – 2012-01-16 11:53:33