2014-12-05 58 views
1

我需要幫助顯示更多顯示較少爲總和格。Jquery顯示更多div和顯示更少div

我創造了這個DEMO codepen.io

在這種DEMO你可以看到8 div紅色的框。我想顯示如果總計div大於4,那麼顯示更多鏈接將會出現,當我點擊顯示更多鏈接時,我可以在同一頁面看到所有div。任何人都可以幫助我解決這個問題?

<div class="container"> 
    <div class="post_wrap"> 
    <div class="pst"> 
     Post 1 
    </div> 
    <div class="pst"> 
     Post 2 
    </div> 
    <div class="pst"> 
     Post 3 
    </div> 
    <div class="pst"> 
     Post 4 
    </div> 
    <div class="pst"> 
     Post 5 
    </div> 
    <div class="pst"> 
     Post 6 
    </div> 
    <div class="pst"> 
     Post 7 
    </div> 
    <div class="pst"> 
     Post 8 
    </div> 
    <div class="test"><a href="">Show More</a></div> 
    </div> 
    <div class="post_wrap"> 
    <div class="pst"> 
     Post 1 
    </div> 
    <div class="pst"> 
     Post 2 
    </div> 
    <div class="pst"> 
     Post 3 
    </div> 
    <div class="pst"> 
     Post 4 
    </div> 
    <div class="pst"> 
     Post 5 
    </div> 
    <div class="pst"> 
     Post 6 
    </div> 
    <div class="pst"> 
     Post 7 
    </div> 
    <div class="pst"> 
     Post 8 
    </div> 
    <div class="test"><a href="">Show More</a></div> 
    </div> 
</div> 
+0

檢查CodePen在我的編輯答案 – kapantzak 2014-12-05 13:49:39

回答

2

CSS

div.test { display:none } 

jQuery的

1)首先,選擇帶班 '.post_wrap'

$('.post_wrap') 

2)然後每一個元素,each()功能jQuery的迭代在DOM中找到的每個.post_wrap元素上,並用.pst的類來計算子div div

$(this).find('div.pst').length; 

更詳細

的$(本)是指各()函數被應用到,在這種情況下,$( 'post_wrap') 這一發現的元素()函數搜索到應用的元素,發現它被告知發現,在這種情況下,找到每個div.pst元素 而且,長度計數找到的元素

和結果存儲在一個名爲「divNum」

變量0

現在,ID divNum大於4

if (divNum > 4) 

顯示div.test元素

$('div.test').show() 

$('.post_wrap').each(function() { 
    var divNum = $(this).find('div.pst').length; 
    if (divNum > 4) { 
     $('div.test').show(); 
    } 
}) 

那麼如果dv.test可見:

$('div.test').click(function() { 
    // show more divs 
}) 

編輯 - >您代碼筆

檢查CodePen

jQuery的

$ShowHideMore = $('.post_wrap'); 
$ShowHideMore.each(function() { 
var $times = $(this).children('.pst'); 
if ($times.length > 5) { 
    $ShowHideMore.children(':nth-of-type(n+5)').addClass('moreShown').hide(); 
    $(this).find('span.message').addClass('more-times').html('+ Show more'); 
} 
}); 

$(document).on('click', '.post_wrap > span', function() { 
var that = $(this); 
var thisParent = that.closest('.post_wrap'); 
if (that.hasClass('more-times')) { 
thisParent.find('.moreShown').show(); 
that.toggleClass('more-times', 'less-times').html('- Show less'); 
} else { 
thisParent.find('.moreShown').hide(); 
that.toggleClass('more-times', 'less-times').html('- Show more'); 
} 
}); 
+0

我不是jQuery的非常好。你能否向我解釋一下 – innovation 2014-12-05 13:04:27

+0

謝謝你的回覆。你可以檢查一下嗎 ? [CODEPEN](http://codepen.io/shadowman86/pen/jEWbWL)以及如何添加Show less按鈕? – innovation 2014-12-05 13:19:16

+0

如果沒有此代碼,此代碼將無法正常工作:http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js。如果我從我的jquerys中刪除這個,那麼你的代碼將工作。 – innovation 2014-12-05 15:27:44