jQuery $(document).ready(function()

时间:2009-10-29 12:56:00

标签: jquery

方案如下。

在父页面上,我们有一个div标签,其id和名称为“placeHolder”。

  • 步骤1:“placeHolder”通过ajax调用填充Page1内容。
  • 第2步:“placeHolder”通过ajax调用填充Page2内容。
  • 第3步:“placeHolder”再次通过ajax调用填充Page1内容。

第一次加载页面时$(文档).ready(函数()被调用,但从第3步开始,就没有调用ready函数。

任何方向都会受到赞赏。

6 个答案:

答案 0 :(得分:2)

我认为你暗示通过你的ajax调用注入div的元素正在丢失它们的事件处理程序。如果是这种情况,您需要使用live委派这些事件,或者将它们重新绑定到ajax方法的success回调中的元素。 $(document).ready()块仅在第一次加载页面时执行。

比方说,通过ajax调用替换的元素之一是class="something"的锚:

$('a.something').live("click", function() {
    alert('hello');
});

以上将确保当通过ajax调用替换锚点时,单击处理程序仍将执行。

答案 1 :(得分:1)

你应该在你的ajax调用中使用complete回调

答案 2 :(得分:1)

文档加载时

$(document).ready(...) :如果您通过Ajax加载内容,则此事件仅在第一次加载页面时触发。因此,您最好按karim79建议使用live或您的Ajax方法成功回调。

答案 3 :(得分:0)

我的理解是$(document).ready)仅在浏览器完成网页的初始GET时调用。

如果要触发某个函数,则可以在Ajax调用中使用成功回调。

答案 4 :(得分:0)

“第一次加载页面时$(文档).ready(函数()被调用,但是从第3步开始,就没有调用ready函数” - 假设1-3是在初始页面加载时按顺序执行。所以,YES - 这是它如何工作的有效描述。

$(document).ready()是一个EVENT HANDLER - 换句话说:文档已准备好被访问,脚本已经完成加载。其他事件发生在此之后(之前,但为此目的,jQuery在准备就绪时已“准备就绪”。

仅供参考,以下内容也有效:

function myOnLoaded()
{
   // do my load thing here
}

$(document).ready(myOnLoaded);

当事件(就绪)触发时,调用myOnLoaded。

答案 5 :(得分:0)

上面关于$(document).ready不工作的原因的答案是正确的。

但$(document).live已在jquery 1.9中弃用 http://jquery.com/upgrade-guide/1.9/#live-removed

相反,你应该使用$(document).on 这里的文档:http://api.jquery.com/on/

function myOnLoaded()
{
   // do my load thing here
}

$(document).on("click", "a.something", myOnLoaded)