2010-08-07 3 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 ... если это имеет смысл. –

0

Для начала return false; должен быть в конце функции, потому что любой код, который появляется после этого в этой функции, будет игнорироваться.

Плюс, вам это не нужно, и e.preventDefault(); в той же функции, они немного перекрываются. Вы можете больше узнать об их сходствах here. Выбери один.

+0

Будьте осторожны с вашим последним заявлением, они не делают то же самое *, даже ваш связанный ответ точно различает два: –

+0

Да, это предложение могло быть сформулировано лучше. – cnanney

Смежные вопросы