2009-12-11 91 views
1

我把錶轉換成只是div ......但是,在這樣做,我需要重寫一個函數,我有一些問題......我試圖實現$(this).closest(' div'),但它並沒有做我認爲會做的事...仍在閱讀,但如果有人知道解決方案,我會成爲一個快樂的露營者...jquery - 過濾子div?

本質上,當我點擊一個鏈接,它過濾表與一類的鏈接的類只匹配顯示排...

這是代碼,它最初創建到篩選表...

<a href="#" class="dairy">Dairy</a> 
<a href="#" class="meat">Meat</a> 
<a href="#" class="vegetable">Vegetable</a> 

$('a').click(function(evt){ 
    var myId = $(this).attr('class'); 

    $('tr').each(function(idx, el){ 
     if ($(el).hasClass(myId)) 
     { 
      $(el).show(); 
     } 
     else 
     { 
      $(el).hide(); 
     } 
    }); 
}); 

我從此改變了該表的div:

<div id="primary-div"> 

    <div class="child dairy"> 
    <div class="title">Title</div> 
    <div class="text">Lorem ipsum</div> 
    </div> 

    <div class="child dairy"> 
    <div class="title">Title</div> 
    <div class="text">Lorem ipsum</div> 
    </div> 

    <div class="child meat"> 
    <div class="title">Title</div> 
    <div class="text">Lorem ipsum</div> 
    </div> 

    <div class="child vegetable"> 
    <div class="title">Title</div> 
    <div class="text">Lorem ipsum</div> 
    </div> 

</div> 

就像我說的,我還在尋找,但我被可怕的失敗......

回答

1

試試這個:(未經測試)

<a href="#" class="dairy">Dairy</a> 
<a href="#" class="meat">Meat</a> 
<a href="#" class="vegetable">Vegetable</a> 
$('a').click(function(e){ 
    var myId = $(this).attr('class'); 

    $('#primary-div div.child:not(.' + myId + ')').hide(); 
    $('#primary-div div.child.' + myId).show(); 

    return false; 
}); 
0
$('a').click(function(evt){ 
    var myId = $(this).attr('class'); 

    $('div#primary-div div.child').hide(); 
    $('div#primary-div div.'+myId).show(); 
}); 

這應該這樣做。

+0

MEH,這兩個工作,所以謝謝兩位!我只能接受一個......哼哼。 – phpN00b 2009-12-11 03:56:53

0

只是踢,這裏是和優化的版本,使用jQuery的鏈接的end()方法:

$('a').click(function(e){ 
    $("div#primary-div > div") 
     .not('.' + this.className).hide().end() 
     .filter('.' + this.className).show(); 

    return false; 
});