2015-02-25 2 views
0

У меня есть панель навигации фильтра, которая при нажатии каждой кнопки отображает только те проекты с соответствующей категорией. Когда нажимается кнопка «Все», отображается все из них. Кроме того, при нажатии кнопки он добавляет выбранный класс, который меняет цвет фона.jQuery .toggle() кнопка создания исчезает

Цель: Когда кнопка будет нажата второй раз (если она уже выбрана), чтобы все отобразилось и кнопка была отменена.

Проблема: я считаю, что метод .toggle(fn1{}, fn2{}) будет правильным путем, где fn1 отобразит выбранный класс на кнопке и отобразит только соответствующие проекты, а fn2 вернет все обратно к исходному дисплею. Однако, при использовании метода .toggle(), вся кнопка исчезает (в настоящее время применяется к кнопке «веб-дизайн»).

Так что heres JSFiddle.

+0

что конкретная версия [.toggle (п, п)] (http://jquery.com/upgrade-guide/1.9/ # toggle-function-function-deleted) был удален в jQuery 1.9 –

+0

в любом случае я могу добиться такого же эффекта в 2.1. Было бы проще оставить код как есть и использовать миграцию jQuery? Если это так, вызвало бы какие-либо помехи? Спасибо, несколько новичок в использовании jQuery. – dcook

ответ

1

Вы можете сделать что-то вроде

var $all = $("#projects").find("li.wrap"); 

$('#all-btn').click(function() { 
    $("#nav-filter li").removeClass("selected"); 
    $(this).addClass("selected"); 
    $all.fadeIn(1000); 
}); 

//toggle is making button dissappear 
$('#nav-filter li[data-type]').click(function() { 
    var $this = $(this), 
     $clis = $all.filter('.' + this.dataset.type) 
    $this.toggleClass("selected"); 
    $('#nav-filter li').not(this).removeClass('selected'); 
    if ($this.hasClass('selected')) { 
     $all.not($clis).fadeOut(1000); 
     $clis.fadeIn(1000); 
    } else { 
     $all.fadeIn(1000); 
    } 
}); 

Демо: Fiddle

+0

Спасибо, работает безупречно! – dcook

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