简体   繁体   English

自动隐藏可选项内的“加载更多”按钮

[英]Auto hide the “Load more” button inside tabbable

I am working on a photo album page using bootstrap tabbable. 我正在使用Tabsable引导程序处理相册页面。 In this page each tab holds rows of images, the first row was shown as default while other rows are hided. 在此页面中,每个选项卡都包含图像行,第一行显示为默认行,而其他行则被隐藏。 When pressing the "load more" button, one more row would be shown. 当按下“加载更多”按钮时,将显示多一行。 Please check this Bootply for easy understanding. 请检查此Bootply,以便于理解。

My problem is that I don't know how to hide my "load more" button when all contents are shown. 我的问题是,显示所有内容时,我不知道如何隐藏我的“加载更多”按钮。 The problem is a bit complicated for me as I want to reset my tabs after every tab switching events. 这个问题对我来说有点复杂,因为我想在每次切换选项卡事件后重置自己的标签。

My code: 我的代码:

HTML: HTML:

<div class="tabbable">
    <ul class="nav nav-tabs">
        <li class="active" id="tab"><a href="#tab1" data-toggle="tab">tab1</a></li>
        <li id="tab"><a href="#tab2" data-toggle="tab">tab2</a></li>
        <li id="tab"><a href="#tab3" data-toggle="tab">tab3</a></li>
    </ul>
</div>
<div class="con-box">
    <div class="tab-content">
        <div class="tab-pane active" id="tab1">
            <div>Row1-1</div>
            <div class="more" id="hidden1">Row1-2</div>
            <div class="more" id="hidden2">Row1-3</div>
        </div>
        <div class="tab-pane" id="tab2">
            <div>Row2-1</div>
            <div class="more" id="hidden1">Row2-2</div>
            <div class="more" id="hidden2">Row2-3</div>
        </div>

        <div class="tab-pane" id="tab3">
            <div>Row3-1</div>
            <div class="more" id="hidden1">Row3-2</div>
            <div class="more" id="hidden2">Row3-3</div>
        </div>
    </div>

    <div class="loading"><a>Load more...</a></div>
</div>

JavaScript: JavaScript的:

var hidden = 1;
$("div.more").hide();

$(".loading").click(function(){
    $("div#hidden"+hidden).show();
    hidden++;
});

$("li#tab").click(function(){
    $("div.more").hide();
    hidden=1;
});

I've changed the approach a little. 我已经稍微改变了方法。

  • Every time you click the load more button, the code looks between the current tab hidden divs, and shows the first one. 每次您单击“ load more按钮时,代码将在当前选项卡的隐藏div之间查找,并显示第一个。
  • If the length of hidden divs (in the current tab page) is <= 1 , then you have to hide the .loading button 如果隐藏的div的长度(在当前标签页中) <= 1 .loading <= 1 ,则必须隐藏.loading按钮
  • each time you change tab, you have to show the .loading button 每次更改标签时,都必须显示.loading按钮

note that I've assigned an unique id to each div.more , but you can get rid of it as it is not used 请注意,我为每个div.more分配了一个唯一的id ,但是您可以将其删除,因为它不被使用

Working example : http://www.bootply.com/P5LGMtSuIW 工作示例http : //www.bootply.com/P5LGMtSuIW

HTML HTML

<div class="tabbable">
    <ul class="nav nav-tabs">
        <li class="active"><a href="#tab1" data-toggle="tab">tab1</a></li>
        <li class="tab"><a href="#tab2" data-toggle="tab">tab2</a></li>
        <li class="tab"><a href="#tab3" data-toggle="tab">tab3</a></li>
    </ul>
</div>
<div class="con-box">
    <div class="tab-content">
        <div class="tab-pane active" id="tab1">
            <div>Row1-1</div>
            <div class="more" id="t1-1">Row1-2</div>
            <div class="more" id="t1-2">Row1-3</div>
        </div>
        <div class="tab-pane" id="tab2">
            <div>Row2-1</div>
            <div class="more" id="t2-1">Row2-2</div>
            <div class="more" id="t2-2">Row2-3</div>
        </div>
        <div class="tab-pane" id="tab3">
            <div>Row3-1</div>
            <div class="more" id="t3-1">Row3-2</div>
            <div class="more" id="t3-2">Row3-3</div>
        </div>
    </div>
    <div class="loading"><a>Load more...</a>
    </div>
</div>

JS JS

$("div.more").hide();

$(".loading").click(function () {
    //--- get all divs
    var divs = $("div.tab-pane.active div.more:hidden");
    if (divs.length <= 1) $(".loading").hide();

    //--- show the first hidden
    $(divs).eq(0).show();
});

$("li.tab").click(function () {
    $(".loading").show();
    $("div.more").hide();
});

CSS CSS

div.more{
    display:none;
}

Hope it helps 希望能帮助到你

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM