2010-08-07 143 views
0

我正在嘗試使用jQuery和多個類創建可過濾的照片庫。我有一些代碼設置,但它似乎沒有工作。任何人都可以告訴我如何解決這個問題?使用jQuery過濾內容

$(document).ready(function(){ 
     $('#sorter a').click(function(e){ 
     var sortName = $(this).text().toLowerCase().replace(' ','-'); 
     if(sortName === 'all-images'){ 
     $('#photorow1 li').show().removeClass('hidden'); 
      } 
     else { 
    $('#photorow1 li').filter(sortName).show().removeClass('hidden') 
       .end().not(sortName).hide().addClass('hidden'); 
     } 
e.preventDefault(); 
}); 
}); 

任何幫助將不勝感激!!

*更新的代碼

回答

1

問題是你正在做一個return false正在做任何工作之前,將是您的單擊處理:)

總體結束時,您可以清理了一下,這樣的事情應該做的:

$(function(){ 
    $('#sorter a').click(function(e){ 
    var sortName = $(this).text().toLowerCase().replace(' ','-'); 
    if(sortName === 'all-images') { 
     $('#photorow1 li').show(); 
    } else { 
     $('#photorow1 li').filter(filterVal).show().removeClass('hidden') 
        .end().not(filterVal).hide().addClass('hidden'); 
    } 
    e.preventDefault(); 
    }); 
}); 

我建議你只需要添加display: none;.hidden CSS規則(如果你需要的類別的東西),否則只是.hide()/.show()作品。

+0

這是工作,但它隱藏所有的元素,並以某種方式忽略與我嘗試使用sortName指定的類名稱的元素...如果這是有道理的。 – 2010-08-07 01:51:39

0

對於初學者,return false;應該在函數的末尾,因爲它後面的任何代碼都會被忽略。

另外,你不需要和e.preventDefault();在相同的功能,他們重疊了一下。你可以閱讀更多關於他們的相似之處here。選一個。

+0

小心你最後的陳述,他們不會做*相同的事情*,即使你的鏈接的答案准確地區分這兩個:) – 2010-08-07 01:37:24

+0

是的,這句話可能措辭更好。 – cnanney 2010-08-07 02:03:15