2011-12-15 82 views
1

我添加動態設置選項卡,如果一些點擊我的頁面上的設置鏈接,但我想要刪除它一旦設置選項卡已失去焦點(這意味着他們點擊另一個選項卡)該選項卡被刪除,但它似乎進入一個無限循環調用removeSettingsTab方法。任何想法爲什麼?刪除選項卡不工作與jquery

$("#navMain").tabs({ 
     select: function(event, ui) { 

      var selected = $("#navMain").tabs("option", "selected"); 

       if (selected == 8) { 
        removeSettingsTab(); 
       } 
      } 
    }); 

    $('.settings').click(function() {  
     createSettingsTab(); 
     $('#navMain').tabs('select', "tab-setting"); 
    }); 

    function createSettingsTab() { 
     $("#navMain").tabs("add","#tab-setting","Settings"); 
     $("#tab-setting").css("display","block"); 
    } 

    function removeSettingsTab() { 
     $('#navMain').tabs('remove', 8); 
    } 

回答

1

綁定一個處理的show事件來檢查,如果

  1. 「設置」選項卡中已添加(這將防止移除標籤中的特殊功能應該被觸發之前)和
  2. 已顯示的選項卡與設置選項卡不同

如果這兩個條件都成立,則可以繼續並撥打removeSettingsTab()

例如,此代碼對我的作品(含3個標籤,最後一個是「設置」,它已被添加):

$(function() { 
    $("#navMain").tabs({ 
     show: function() { 
      var $tabs = $("#navMain"); 
      if ($tabs.tabs("option", "selected") != 2) { 
       $tabs.tabs("remove", 2); 
      } 
     } 
    }); 
}); 
+0

看到我的變化...標籤仍然沒有被刪除,但我打的刪除電話... – Paul 2011-12-15 20:07:35

1

我不知道HTML結構,但你想要做的是目標的所有選項卡,並運行removeSettingsTab()功能如果選定選項卡沒有設置選項卡:

$('#navMain').find('<all tab elements selector>').not('#tab-setting').on('click', removeSettingsTab);