2011-08-08 94 views
0

Please see my demo.jQuery函數 - 意外行爲

作用:

  • 一次所選的選項卡是越來越同類產品,僅顯示ul.portfolio > li 與此類

    $('.portfolio-filter li a').click(function() { 
    
    
        $('.portfolio-filter > .selected').prop('class',''); 
        $(this).parent('li').addClass('selected'); 
    
        var FilterClass = $(this).attr('class'); 
    
        $('#portfolio-items li').hide(); 
        $('#portfolio-items li.' + FilterClass).show(); 
        $('#portfolio-items').CreateTabs(); 
    
    }); 
    
    元素頂部
  • 然後運行CreateTabs函數 - 它在b上創建分頁ottom

  • 問題是,這是<li class="all website"></li>最後一個元素沒有得到它'logo'類,但如果您選擇標籤LOGO將得到displayed./

爲什麼?任何建議非常感謝!

+0

您的分頁代碼顯示所有鏈接,而不僅僅是所選標籤的鏈接。由於徽標是唯一擁有4個以上項目的選項卡,因此您不會在其他選項卡中看到它。 – Pelshoff

+0

@Pelshoff - 我不明白 - 你能再試一次嗎? – Iladarsda

回答

1

問題在於CreateTabsPagination函數。

下面是CreateTabs解決方案:

$.fn.CreateTabs = function(filterClass){ 

     var CoundNumberOfDivs = $('#portfolio-items li:visible').length; 
     $('.pagination li a').hide(); 
     if(CoundNumberOfDivs <= 4) { 
      return false; 
     } 
     else { 
      var num = Math.ceil(CoundNumberOfDivs/4); 
      $('.pagination li a:lt(' + num + ')').show(); 
      $('#portfolio-items li').hide(); 
      if (filterClass === undefined) { 
       $('#portfolio-items li:lt(4)').show(); 
      } else { 
       $('#portfolio-items li.' + filterClass + ':lt(4)').show(); 
      } 
     } 

    }; 
})(jQuery); 

如果刪除前四個要素之一logo類,你會看到,過濾作品。 現在,分頁仍然會造成問題......所以這裏有一個解決方案。

var filterClass; 

$('.portfolio-filter li a').click(function() { 


    $('.portfolio-filter > .selected').prop('class',''); 
    $(this).parent('li').addClass('selected'); 

    filterClass = $(this).attr('class'); 

    $('#portfolio-items li').hide(); 
    $('#portfolio-items li.' + filterClass).show(); 
    $('#portfolio-items').CreateTabs(filterClass); 

}); 

$('ul.pagination li a').click(function(event) { 
     $('ul.pagination li .active').removeClass('active'); 
     $(this).addClass('active'); 

    var PI = $('#portfolio-items li' + (filterClass !== undefined) ? '.' + filterClass : ''); 
     $('#portfolio-items li').hide(); 
    ..... 

 if ($(this).hasClass('href-1')) { 
      PI.slice(0, 4).show(); 
     } 
     .... etc 

這個零件已經被改寫 - 坦率地說,這僅僅是壞的。

+0

對不起,我的代碼無法工作。你有沒有用工作榜樣做一個小提琴? – Iladarsda

+0

得知那個工作知道http://jsfiddle.net/MrTest/DmFmM/47/ - 爲什麼onload沒有選擇 - 不應該你的if(filterClass === undefined)'處理它? – Iladarsda

+0

獲取默認選擇 - 替換部分: '$(document).ready(function(){ var filterClass ='all'; $('#portfolio-items li')。CreateTabs(filterClass);' –

0

我沒有完全理解,但我認爲這個問題是在你的分頁功能,因爲只有當你切換到第3頁最後一個LI元素顯示,是嗎? 看看這個: -Click所有 -Click第3頁 - 點擊「標識」 -Observe -Result:3的數量繼續選擇和分頁順序被改變,如果單擊第2頁,結果是更高的比第3頁的要多。

+0

我不明白 - 你能再試一次嗎? – Iladarsda