【发布时间】:2014-07-14 10:24:40
【问题描述】:
我有 1 个静态选项卡,这是我的默认选项卡和 2 个根据数据库记录动态生成的动态选项卡。
在数据库更改时,我使用$('.dynamic').remove(); JQuery remove 方法删除元素并动态重新生成元素。
根据数据库记录生成动态选项卡和内容
在第一页加载时,会加载 1 个静态选项卡和 2 个动态选项卡...
每当在数据库中进行更改时,要么删除或修改记录, 我必须动态重新生成选项卡并显示其中的内容。
问题是,当用户在动态选项卡上并在数据库中进行更改时, 所有动态内容首先被删除,然后再次添加到页面中。由于这个原因,该选项卡的内容已被删除,并且在用户切换或再次单击该选项卡之前不会显示任何内容。
我发现的问题是,我丢失了活动标签和内容。这就是为什么每当对数据库进行更改时,它首先会删除所有动态选项卡及其内容,然后再动态添加。
如果我使用$('.dynamic').show(),它会将选项卡的所有内容堆叠在一起。
有什么方法可以在数据库更改时保持选项卡及其内容处于活动状态。
或
通过使用$('.dynamic').show() 并维护选项卡及其内容。
代码:
var data = JSON.parse(json);
$('.dynamic').remove();
$.each(data, function (arrayId, item) {
$('.nav-tabs').append('<li class="dynamic" > <a href="#tab' + (arrayId + 2) + '" role="tab" data-toggle="tab">' + (item.Name) + '</a></li>');
$('.tab-content').append('<div class="tab-pane dynamic" id="tab' + (arrayId + 2) + '">' +
// Content Here
'</div>');
});
我想要做的是在动态删除之前保留显示给用户的活动标签。 如果标签数据从数据库中删除,则应选择第一个标签。
在这个问题中没有postback 或callback。
当数据库发生变化时,服务器将内容推送到所有客户端。
【问题讨论】:
-
如果您可以分享更多代码,那将会很有用。但是理论是这样的:在从 DB 重新加载动态选项卡之前,您应该“记住”(例如存储在变量中)当前活动的选项卡。重新加载动态选项卡后,您可以重新激活上一个活动选项卡,或者如果之前活动的选项卡已被删除,则激活默认选项卡。
标签: javascript jquery twitter-bootstrap tabs