【问题标题】:Jquery UI TABS-3 : Prevent Switching (until ajaxcomplete/success) : How To?Jquery UI TABS-3:防止切换(直到 ajaxcomplete/成功):如何?
【发布时间】:2009-10-22 19:00:44
【问题描述】:

我想在 Ajax 调用完成之前阻止选项卡切换。有什么办法可以做到这一点?现在(默认情况下)当我单击另一个选项卡时,它会切换到该选项卡。我想阻止这种情况,直到 Ajax 调用成功/完成。仅供参考:我正在使用 Jquery Tabs-3 插件。请帮帮我。

【问题讨论】:

  • 在 cmets 中,将代码放在 ` 字符之间(在 1 键旁边)

标签: jquery jquery-ui jquery-ui-tabs


【解决方案1】:

我假设您使用的是jQuery UI Tabs;如果不是,请链接到您正在使用的内容。

如果是这样,您可以在开始加载时通过调用.tabs('disable', index) 禁用选项卡,并在完成加载后通过调用.tabs('enable', index) 再次启用它。您还可以传递一个索引数组。

【讨论】:

  • 感谢您的回复,是的,我正在使用 jQueryUITabs (docs.jquery.com/UI/Tabs)。我有几个嵌套选项卡,我想在 'tabsselect 绑定事件' $('#tabs > ul').bind('tabsselect', function(event, ui) {.....});你能指导我吗?
  • 你为什么不直接禁用标签?
【解决方案2】:

要回答您的评论,

$('#tabs > ul').bind('tabsselect', function(event, ui) {
    if(inAjaxRequest)
        return false;
    //Do whatever you're already doing here
    return true;
});

【讨论】:

  • 用一些代码替换inAjaxRequest,用于确定是否要让用户切换选项卡。
  • 再次感谢,这就是我卡住的地方,因为我同时拥有 tabsselect 和 tabsshow 绑定。现在,我无法在 ajaxstart 和 ajaxstop 期间保持控制。它只是通过并调用 tabsshow 事件,该事件依次显示相应的选项卡。
  • 根据 jquery UI 选项卡文档,只有从 tabsselect 绑定中的 return false; 才能防止切换。所以,我只是想(不知何故)return true; if ajax complete else false 并且我无法弄清楚如何持有之间的控制。我希望你能理解我的看法和逻辑。你能解释一下吗?
  • 你说的“控制住”是什么意思?
  • 通过说“保持控制”,我的意思是说,当“tabsselect”被触发时,下一个事件“tabsshow”不应该被触发,直到 ajax 请求完成/成功。
【解决方案3】:

要回答您的其他评论 (By saying "hold the control", I mean to say that when 'tabsselect' even is triggered, next event which is 'tabsshow' shouldn't be triggered until ajax request gets complete/succeed),您不能直接这样做。

但是,您可以取消tabsselect,但将用户尝试切换到的选项卡的索引存储在变量中。然后,当 AJAX 请求完成时,检查变量是否包含选项卡索引(以防用户没有切换选项卡),如果有,则切换到该选项卡。请务必重置该变量,以防您稍后发出另一个 AJAX 请求。

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    相关资源
    最近更新 更多