2011-12-15 15 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. へのハンドラ表示されているタブは、設定タブとは異なるものです

これらの条件が両方とも成立した場合は、012に電話をかけてください。例えば

は、このコードは(3つのタブで、最後の1は「設定」であり、それはすでに追加されている)私の作品:

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

コールを削除する... – Paul

+0

@Paul:タブが変更される前に 'select'が実行されています*ので、それは実際ではありません最も適切です。代わりに 'show'を使用してください(タブが切り替えられた後に*起動します)。私の編集を参照してください。 – Jon

+0

それはそれだった...ありがとう! – Paul

1

私はHTML構造のよく分からないけど何やりたいターゲットすべてのタブで、選択したタブが設定タブではない場合removeSettingsTab()機能を実行します。私の変更は...タブがまだ削除されていませんが、私は当たってる参照してください

$('#navMain').find('<all tab elements selector>').not('#tab-setting').on('click', removeSettingsTab); 
関連する問題