【问题标题】:PHP jQuery: Append() to tabs is duplicating content until tabs are revisitedPHP jQuery:Append() 到选项卡正在复制内容,直到重新访问选项卡
【发布时间】:2019-05-20 23:40:00
【问题描述】:

我在将内容附加到属于同一容器的 3 个选项卡时遇到问题。出于某种原因,当我将元素附加到每个选项卡的容器时,我会在每个选项卡上得到一个副本,直到我单击该选项卡并再次返回。

以下是我尝试执行此操作的示例。

制表符

<div class="tab-content">
    <div class="tab-pane active" id="tabs1" role="tabpanel">
        <div id="container1" class="widget">
        </div>
    </div>
    <div class="tab-pane active" id="tabs2" role="tabpanel">
        <div id="container2" class="widget">
        </div>
    </div>
    <div class="tab-pane active" id="tabs3" role="tabpanel">
        <div id="container3" class="widget">
        </div>
    </div>
</div>

数据和内容

$.ajax({
    url: 'data.php',
    type: 'post',
    dataType: 'json',
    data: {id: id},
    success: function(res){

        var len = res.length;

        $("#container1").empty();
        $("#container2").empty();
        $("#container3").empty();

        for( var i = 0; i<len; i++){

        var content = res[i]['content'];
        var isValid = res[i]['isValid']; //boolean

        $('#container1').append('<div>'+content+'</div>'); //this tab includes all results

        if(isValid){
        $('#container2').append('<div>'+content+'</div>'); //this tab includes only valid results
        }

        if(!isValid){
        $('#container3').append('<div>'+content+'</div>'); //this tab includes only invalid results
        }
    }
});

这个例子表明所有数据都在同一个数组中,然后有条件地附加到每个容器中。

所以发生的情况是,当我第一次访问每个选项卡时,我会看到以下内容。

"container1" 显示所有内容,但它也将所有内容复制两次。 (因此,如果我希望每个选项卡有 1 个结果,则 container1 应该显示 3 个结果,而是显示 6 个(每个 2 个)。换句话说,它显示的是用于 container1 的内容,也显示了用于 container2 和 container3 的内容.

“container2”显示“container2”和“container3”中的内容,直到重新访问选项卡,然后显示正确的内容。

“container3”显示“container2”和“container3”中的内容,直到重新访问选项卡,然后显示正确的内容。

当我重新访问每个选项卡时,我会看到每个选项卡的独特内容。

我尝试从不同的数组中提取数据(在服务器端将它们分开),但仍然得到相同的最终结果。

我没有得到的是,当我重新访问选项卡时,重复项消失了。

提前致谢,

【问题讨论】:

    标签: jquery html ajax


    【解决方案1】:

    由于我没有你的选项卡控件的实现,我只能假设,但我认为这是因为你的所有选项卡都有 .active 类,它将同时显示所有三个选项卡。例如,如果您的列表中有 6 个条目,其中 2 个有效条目和 4 个无效条目,您将看到总共 12 个条目,但它们将出现在三个不同的 DIV 选项卡中,它们彼此下方。如果您的类 .widget 没有外边框或其他分隔符,这可能看起来只是一个元素。

    更改它以使只有一个选项卡保持可见,例如“tab1”标签:

    <div class="tab-content">
        <div class="tab-pane active" id="tabs1" role="tabpanel">
            <div id="container1" class="widget">
            </div>
        </div>
        <div class="tab-pane" id="tabs2" role="tabpanel">
            <div id="container2" class="widget">
            </div>
        </div>
        <div class="tab-pane" id="tabs3" role="tabpanel">
            <div id="container3" class="widget">
            </div>
        </div>
    </div>
    

    【讨论】:

    • 你说得对。当我设置选项卡时,我完全忽略了 .active 类,因为我使用一个示例来设置其余选项卡。从其他选项卡中删除 .active 类后,一切都按预期工作。非常感谢。
    • 很高兴听到!复制粘贴错误发生得如此频繁,以至于我总是先检查此类错误;-)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多