javascript - 使用 jQuery .load() 预加载页面?

标签 javascript jquery

我有一个页面,其中有几个弹出窗口显示页面上每个项目的详细信息。当用户单击按钮时,将显示弹出窗口(这是一个 jQuery 对话框)。对话框的 html 是从另一个页面/url 中提取的。我使用 jQuery 的 .load() 方法。第一次将页面加载到我的对话框中时,浏览器需要几秒钟的时间,这是我老板不希望看到的。

我已尝试异步预加载这些页面,但无法正常工作。页面被阻塞,直到所有加载发生。我尝试了三种不同的方式:

//1
$('.transactions-preloader').each(
    function(index, Element){
    var id = Element.id.replace('details-dialog', '');
        $(this).load( "/" + id + "/1/" + period + ".html" );
    }
);

//2
$('.transactions-preloader').each(
    function(index, Element){
        var id = Element.id.replace('details-dialog', '');
        $.ajax({
              url: "/" + id + "/1/" + period + ".html",
              async: true,
              cache: false,
              success: function(html){
                  $("#"+Element.id).html(html);
              }
             });
    }
);

//3
$('.transactions-preloader').each(
    function(index, Element){
        var id = Element.id.replace('details-dialog', '');
        $.get( "/" + id + "/1/" + period + ".html", function(data) {
            $("#"+Element.id).html(data);
        });
    }
);

这三种方式都可以正常工作,除了它们都会在加载发生时阻塞页面。

关于如何进行异步预加载有什么想法吗?

最佳答案

试试这个它不会挂起浏览器。

$('.transactions-preloader').each(
    function(index, Element){
    setTimeout(function(){
      var id = Element.id.replace('details-dialog', '');
          $(this).load( "/" + id + "/1/" + period + ".html" );
      }
   }, 10);
);

关于javascript - 使用 jQuery .load() 预加载页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853591/

相关文章:

javascript - 将带点或逗号的字符串作为小数点分隔符转换为 JavaScript 中的数字

javascript - 有两个圆圈和一个点。如何沿着它绕圈

javascript - 如何仅使 Dropzone.js Previews Div 可点击而不是整个表单

javascript - 在选择单选按钮时显示文本框/按钮

jquery - Bootstrap 垂直菜单 - 单击另一个菜单项时关闭当前菜单项

javascript - 如何刷新div而不刷新所有php数据

javascript - 具有范围的数字的 Angular 链接数组

javascript - 如何捕获子组件 setter 抛出的错误?

javascript - 多个下拉 <select> 菜单,一次只能选择一个

javascript - Jquery无法选中复选框