【问题标题】:Skip ajax (or any other procedure) from another event (or function)从另一个事件(或函数)中跳过 ajax(或任何其他过程)
【发布时间】:2013-07-24 08:36:56
【问题描述】:

所以问题在于,我们有 2 个选项卡,第一个选项卡通过 ajax1 加载内容,而 2d 选项卡通过 ajax2 加载内容。所以用例:单击第一个选项卡,加载 ajax 内容。快速单击,不要等待ajax完成。显示了 tab2 内容(ajax2 比 ajax1 完成得更快),但 ajax1 刚刚完成并覆盖了一个内容块。一般来说,我们选择了一个 2d 选项卡,但加载了第一个选项卡内容。

该解决方案类似于我知道的以下代码,我想要更花哨的解决方案。请:

var isLoading = false;
tabs.on({
    click: function () {
        if (isLoading) return;
        isLoading = true;
        tab.load(function () {
            isLoading = false;
        });
    }
});

【问题讨论】:

  • 标签的内容块怎么都一样?为每个选项卡设置一个内容块并在切换选项卡时切换可见性是否没有意义?这既可以解决您的问题,又可以防止在每个选项卡开关上加载..

标签: javascript jquery callback jquery-deferred


【解决方案1】:

当点击一个标签时禁用其他标签的点击事件,然后再启用它们?

【讨论】:

  • 这不是完全相同的结果吗?无论哪种方式,用户都无法在加载时单击选项卡,从而让用户认为它不起作用。
  • @ThorJacobsen 我同意用户可能认为其他选项卡在 ajax1 结束之前无法工作并且内容块应该按照您的建议分开,但是“完全相同的结果”是什么意思,如果在 onclick 其他选项卡被禁用,用户如何仍然调用其他选项卡的 ajax?我不明白!
  • 我的意思是,从用户的角度来看,禁用点击事件(如您的建议)或仅返回点击事件(如 OP 建议)的行为相同。
  • 目前这个问题以同样的方式解决,但我认为这是不正确的,我们没有任何权利阻止用户界面,对吧?我认为这是不好的做法。
  • @Dmitry 没有必要,在用户完成填写并保存第一个选项卡、在线购物、注册等之前,其他选项卡都被禁用(但可见)的 UI。 . 但是,就像托尔先生建议的那样,绝对有不同的内容块而不是切换同一块的内容是一种很好的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 2012-01-14
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
相关资源
最近更新 更多