Jquery 如何编辑引导选项卡文本,而不将其设置为当前并正常工作?

Jquery 如何编辑引导选项卡文本,而不将其设置为当前并正常工作?,jquery,twitter-bootstrap-3,Jquery,Twitter Bootstrap 3,我有正在动态创建的选项卡,我需要能够编辑这些选项卡中的任何文本,我可以这样做。但是,我遇到了一些需要添加的更改,即可以通过ctrl+click编辑选项卡的文本(我已经这样做了),但不能将选项卡设置为当前选项卡。 例如,我有5个选项卡,第一个选项卡处于活动状态,我想在不中断当前活动选项卡的情况下编辑选项卡3,方法是按住ctrl键并单击,编辑完成后第一个选项卡仍处于活动状态 我有两个不同的事件发生,一个是选项卡的实际点击事件 $('body').on('shown.bs.tab', 'a[data-

我有正在动态创建的选项卡,我需要能够编辑这些选项卡中的任何文本,我可以这样做。但是,我遇到了一些需要添加的更改,即可以通过ctrl+click编辑选项卡的文本(我已经这样做了),但不能将选项卡设置为当前选项卡。 例如,我有5个选项卡,第一个选项卡处于活动状态,我想在不中断当前活动选项卡的情况下编辑选项卡3,方法是按住ctrl键并单击,编辑完成后第一个选项卡仍处于活动状态

我有两个不同的事件发生,一个是选项卡的实际点击事件

$('body').on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
    if ($('#TabEditorWrapper').hasClass("show-tab-editor")) {
        $('#TabEditorWrapper').removeClass("show-tab-editor");
        $('#SiteOverlay').css('display', 'none');
    }

    ...

    $("#List li").addClass('not-active');
});
下面是我在按住ctrl键并单击其他选项卡时用来进行编辑的代码(是的,我知道我已将此设置为单击事件)


在不知道您的html的情况下,我的猜测是,如果在单击事件之前首先找到当前处于活动状态的选项卡。如果该选项卡不是当前选项卡,请从正在编辑的选项卡中删除“活动”类,并将其重置为原始类

问题是,一旦您单击该选项卡,并触发
click
事件,则获取上一个活动选项卡已为时过晚,因为它已被单击,因此您必须先获取当前活动选项卡,然后才能继续。您可以在页面加载时创建一个事件来获取当前活动选项卡

$(document).ready( function() {
    $('.nav-link').each( function() {
        if ($(this).hasClass("active")) {
            var og_active_tab_location = $(this);
        }
    })        
})
现在,您可以告诉单击事件先删除类
active
,然后将og_选项卡标记为
active
。在添加类之前,必须先删除该类,因为如果您正在编辑的选项卡与原始选项卡相同,则活动类将被删除

FYI
.nav link
位于
.nav item
内,是应用
活动的
类的地方,因此您要处理
子类()

$(document).ready( function() {
    $('.nav-link').each( function() {
        if ($(this).hasClass("active")) {
            var og_active_tab_location = $(this);
        }
    })        
})
$(document).on('click', '#List > .nav-item', function (e) {

    $(this).children('.nav-link').removeClass('active');
    og_active_tab_location.addClass('active');

    if (e.ctrlKey) {
        $(this).find('input').toggle()
            .val($(this)
            .find('a').html()).focus();

        $(this).find('a').toggle();

        oldAreaName = $(this).find("a").text();

        currentAreaID = parseInt($(this).find("a").data('areaid'));
    }

});