2010-08-07 80 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