删除选项卡不适用于jquery

时间:2011-12-15 19:49:19

标签: jquery jquery-ui

我正在动态添加设置标签,如果有人点击页面上的我的设置链接,但是我想在设置标签失去焦点后删除它(意味着他们点击了另一个标签页)标签正在删除但是它似乎进入一个无限循环调用removeSettingsTab方法。知道为什么吗?

    $("#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);
    }

2 个答案:

答案 0 :(得分:1)

将处理程序绑定到检查

show事件
  1. 已添加“设置”标签(这将阻止在触发特殊功能之前删除标签)和
  2. 显示的标签与设置标签
  3. 不同

    如果这两个条件都成立,则可以继续拨打removeSettingsTab()

    例如,此代码适用于我(有3个选项卡,最后一个是“设置”,并且已添加):

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

答案 1 :(得分:1)

我不确定HTML结构,但您想要做的是定位所有标签并运行removeSettingsTab()功能,如果所选标签不是设置标签:

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