2011-02-06 154 views
0

我使用的是由Chris Coyier編寫的Filtering Blocks代碼,但我想爲每個第三個「塊」元素添加一個類'last'(以刪除margin-right)。 到目前爲止,我有這樣的:過濾塊+爲每個第三個元素添加一個類

HTML

<div id="blocks-nav"> 
    <a rel="all" class="current">All</a> 
    <a rel="www">Internet</a> 
    <a rel="ci">Logo</a> 
</div> 

<div id="blocks-gropup"> 
    <div class="block all www"> 
    <!-- some content --> 
    </div> 

    <div class="block all ci"> 
    <!-- some content --> 
    </div> 

    <div class="block all www"> 
    <!-- some content --> 
    </div> 

    <div class="block all ci"> 
    <!-- some content --> 
    </div> 

    <div class="block all ci"> 
    <!-- some content --> 
    </div> 

    <div class="block all www"> 
    <!-- some content --> 
    </div>   

</div> 

的jQuery:

 

$(function() { 

     var newSelection = ""; 

     $("#blocks-nav a").click(function(){ 

      $("#blocks-nav").fadeTo(200, 0.10); 

       $("#blocks-nav a").removeClass("current"); 
       $(this).addClass("current"); 

       newSelection = $(this).attr("rel"); 

       $("div.block").not("."+newSelection).slideUp(); 
       $("."+newSelection).slideDown(); 

      $("#blocks-group").fadeTo(600, 1); 

     }); 

}); 


$("div#blocks-group > div:nth-child(3n)").addClass('last'); 

最後一行的實際工作,並增加了一類 「最後」,以每3格,但是在過濾塊之後,這個類將保留相同的div,這在第三個位置不是必需的。 所以,我的問題是 - 我怎樣才能合併這兩個函數,所以這個類將被加載到頁面加載到每個第三個div,然後刪除並在過濾塊之後再次添加。

任何幫助或援助將不勝感激!

回答

1

輕微忽略,過濾需要隱藏元素,因此表達式「nth-child(3n)」在過濾後將不起作用。同樣的代碼非常簡單修復,見下圖:

$(function() { 

    var newSelection = ""; 

    $("#blocks-nav a").click(function(){ 

     $("#blocks-group").fadeTo(200, 0.10); 

     $("#blocks-nav a").removeClass("current"); 
     $(this).addClass("current"); 

     newSelection = $(this).attr("rel"); 

     $("div.block") 
      .removeClass("last") 
      .not("."+newSelection) 
      .slideUp(); 

     $("div.block."+newSelection) 
      .slideDown() 
      // unfortunatly, have to use an .each() 
      .each(function(i){ 
       if (!((i+1) % 3)) { // every third from result set. 
        $(this).addClass("last") 
       } 
      }); 

     $("#blocks-group").fadeTo(600, 1); 

    }); 

    $("#blocks-group > div.block:nth-child(3n)").addClass("last"); 

}); 

看到這裏的工作例如:http://jsfiddle.net/d7n8F/3/

+0

我試圖實現您的解決方案,但我一定是做錯了什麼..這不工作:/這是我的代碼:[鏈接](http://dronka.org/filtering-blocks.js) – Dronka 2011-02-06 13:53:59

相關問題