【问题标题】:JQuery Tabs: How to display a 'Loading...' message' on waiting an AJAX HTTP request response?JQuery 选项卡:如何在等待 AJAX HTTP 请求响应时显示“正在加载...”消息?
【发布时间】:2011-09-12 00:46:42
【问题描述】:

我正在使用 jQuery UI 1.8.12 并且正在实现 Content via AJAX 选项卡。我想在加载内容的同时显示“正在加载...”消息(然后,当然会显示通过 AJAX HTTP 请求检索到的内容)。

我该怎么做?


也许我可以使用tabTemplate 选项,但我不知道该怎么做。


P.S.:我不想使用this question 中使用的解决方案,但我想通过 jQuery 动态(在 DOM 中)添加“正在加载...”消息。

【问题讨论】:

标签: javascript jquery ajax http message


【解决方案1】:

您可以使用BlockUI。然后只需将其添加到您的脚本中即可:

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

每次 AJAX 请求启动时,UI 都会被加载消息阻塞,当停止时,阻塞会淡出,UI 将再次可用。

【讨论】:

  • 我不想使用“外部”插件。只是 jQuery UI。
  • @Backo 出于兴趣,这是为什么呢? jQuery UI 本身是一个外部插件 :) 如果是文件大小,blockUI 大约为 9kb,而 jQuery UI 至少约为 15kb,更有可能约为 40kb。除非有充分的理由不使用它,否则重新发明轮子似乎没什么意义:)
  • 在我之前的评论中,我写了“Just jQuery” UI,因为我不想使用其他插件。
【解决方案2】:

试试:

$('#example').tabs({
    select: function(event, ui) {
        if ($(ui.panel).text() == '')
            $(ui.panel).html('Loading...');
        return true;
    },
});

【讨论】:

  • ui.panel.html('正在加载...'); ?
  • 使用你的代码我得到一个ui.panel.html('Loading...') is not a function 错误。
  • 我\你解决了我的问题:我应该使用$(ui.panel).html('Loading...')
  • 然而,如果我不缓存 AJAX HTTP 请求,它将始终显示“正在加载...”消息。所以,我只想在它第一次加载标签内容时才显示它。
  • if ($(ui.panel).html() == '') ... 语句似乎没有按预期工作。也就是说,在执行 AJAX HTTP 请求的同时,我总是看到一个空白的“正文”。可能的解决方案是使用其他类似的检查来更改== '',但是什么?
猜你喜欢
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2020-09-22
相关资源
最近更新 更多