当前位置: 首页 > 面试题库 >

jQuery等到AJAX页面完全加载

韩善
2023-03-14
问题内容

我使用AJAX在页面A上显示页面B的内容。

如何在内容显示之前让jQuery等待所有内容加载(文本,图像等)?

$.ajax({
    url:"pageB.html",
    beforeSend: function() {
        //show loading animation here
    }
    success: function(data) {
        //hide loading animation here
        $("body").append(data);
    }
});

当处理AJAX请求时,我使用beforeSend向用户显示加载动画。现在,我想“延长”等待时间,以便在加载所有图像之前加载动画不会消失。

我最初尝试隐藏附加数据,等待所有图像加载,然后显示内容- $("body").on("load", "images class here", function() {//show content})内部success但事件似乎没有触发。

有任何想法吗?

更新:

更新的代码:

$.ajax({
    url:"pageB.html",
    beforeSend: function() {
        //show loading animation here
    }
    success: function(data) {
        //hide loading animation here
        $("body").append(data);
        $("body").on("onload", "img", function() {//display content});
    }
});

问题答案:

您必须使用直接事件绑定:

$("body img").on("load", function () { });
$("body .image-class").on("load", function () { });

而不是委托绑定:

$("body").on("load", "img", function() { });
$("body").on("load", ".image-class", function () { });

委托绑定取决于事件冒泡,并非每个事件都如此。看来"load",至少从某起事件而言,该事件<img>并非如此。

示例:http://jsfiddle.net/DLy6j/



 类似资料:
  • 我试过下面的方法,但效果不理想。

  • 如何让代码等待页面在Nodejs中完全加载?我使用SeleniumWebDriver版本4.0。0

  • 问题内容: 我们正在发出多个ajax请求,以“保存” Web应用程序中的数据,然后重新加载页面。我们遇到了这样一种情况:(由于请求是异步发出的)在ajax调用完成时或之前重新加载页面。一种简单的解决方案是使用“ async”:false选项启用ajax调用,从而强制进行同步调用。这似乎可行,但是在执行任何调用之前运行的对话框代码会延迟运行。 任何意见是极大的赞赏! 还应注意,在重新加载之前放置al

  • 本文向大家介绍jQuery EasyUI 页面加载等待及页面等待层,包括了jQuery EasyUI 页面加载等待及页面等待层的使用技巧和注意事项,需要的朋友参考一下 下面一个代码片段是 easyUI 页面加载等待,代码如下所示: 下面看个工具类 基于easyui的页面等待提示层,即mask 效果图: 以上所述是小编给大家介绍的jQuery EasyUI 页面加载等待及页面等待层,希望对大家有所帮

  • 问题内容: 但是我的问题是不对的: 我正在执行许多ajax请求,并将它们保存在数组中: 正如相关问题所表明的那样,$ .when方法 按顺序 接受 一些对象,但是在这里我要 列出它们的清单 。 我在http://api.jquery.com/jQuery.when/#jQuery-when- deferreds中 阅读了文档,但是该方法似乎不支持这种情况(将to 列表传递给函数) 怎么会这样?请帮

  • 问题内容: 我正在尝试使用效果很好的jQuery执行Ajax调用。我使用成功事件来显示数据。但是,似乎在加载外部HTML文件后就触发了成功。如果图像较大,则显示后将继续加载。在所有内容完全加载后,是否可以显示内容?这是代码: 问题答案: @alex编写的插件由于某些原因对我不起作用…我不知道为什么。但是他的代码确实鼓舞了我想出一个对我有用的更轻量级的解决方案。它使用jQuery Promise。请