代码之家  ›  专栏  ›  技术社区  ›  AshleyS

删除动态JQuery UI选项卡

  •  5
  • AshleyS  · 技术社区  · 15 年前

    我在删除已移动的选项卡时遇到问题。

    假设有三个选项卡名为:

    如果我移动“一”,则选项卡如下所示:

    当我删除索引为2的“一”时,会删除选项卡“三”。因此,选项卡现在是:

    二,一。

    我已经测试了许多不同的场景,在我看来,当我删除一个选项卡时,JQueryUI会删除最初具有索引值的错误选项卡,而不是当前具有索引值的选项卡。

    3 回复  |  直到 15 年前
        1
  •  5
  •   No Surprises    15 年前

    您是对的,当您对选项卡进行重新排序时,这些选项卡会保留其旧索引值,从而在尝试删除某个选项卡时导致意外行为。您可以通过在删除之前重新初始化选项卡来强制它更新索引,如下所示:

    $('#tabs').tabs('destroy').tabs();
    $('#tabs').tabs('remove', 2);
    

    这是因为索引是在基于对象的位置设置选项卡时生成的 li

    当然,如果您有一个非常复杂的设置,这可能会对性能产生负面影响,在这种情况下,您可以找到其他方法来更新选项卡索引,或者可以维护一个将原始索引映射到当前索引的数组。

        2
  •  3
  •   Matthew Lock fge    7 年前

    去除 已经不在了 jQueryUI tab API . 现在必须删除呈现选项卡和面板本身的HTML并刷新选项卡:

    function removeTab(tabId) {
      var tabIdStr = "#tabs-" + tabId
    
      // Remove the panel
      $( tabIdStr ).remove();
      // Refresh the tabs widget
      tabs.tabs( "refresh" );
    
      // Remove the tab
      var hrefStr = "a[href='" + tabIdStr + "']"
      $( hrefStr ).closest("li").remove()
    }
    

    https://forum.jquery.com/topic/dynamically-remove-tab

        3
  •  0
  •   Nofix    12 年前

    我暂时这样解决了这个问题:

    .click(function(e) {
    $tab.tabs('remove',$tab.tabs('option','selected'));
    });