2013-10-08 3 views
0

Я пытаюсь использовать флажки для фильтрации содержимого страницы. Я получил его, чтобы скрыть контент, когда я устанавливаю флажок, но он не отображает весь контент снова, когда он не установлен. Любая помощь будет принята с благодарностью. Заранее спасибо.Javascript Filter With Checkbox

$(document).ready(function() { 
$('input').change(function(){ 
    $('input').each(function(){ 
     var checked; 
     if (checked = $(this).attr('checked')); 
     var reclessons = $('li[data-rec='+$(this).data('rec')+']'); 
     checked ? reclessons.show('slow'): reclessons.hide('slow'); 
    }); 
    var unchecked=0; 
    if(unchecked=0){$('li').show('slow');} 
}); 
}); 
+1

Только рекомендация, поставьте флажки с фильтрами на свой класс и выберите их, а не выбрав все входы. – SamT

+2

Ни один из ваших операторов 'if' не имеет' == ' –

+0

Первая короткая рука, вторая ошибка – stevemarvell

ответ

0

.attr() метод не возвращает логическое значение, также = это назначение, не сравнить значения, следует использовать == или === для сравнения.

+0

. Вы действительно должны использовать' .prop («checked») ' – stevemarvell

+0

@stevemarvell Почему? '.prop ('checked')' возвращает значение свойства '.checked' i.e' this.checked'. Нет никакой разницы. – undefined

+0

Но для того, что '.prop()' создано для задания, а '.checked' - недокументированная функция. – stevemarvell

1

Это основа того, что вы хотите. Обратите внимание на prop для проверки.

http://jsfiddle.net/stevemarvell/kEkdy/

<input type="checkbox" data-target="thing1" checked="1"/> 
<div id="thing1">Thing 1</div> 
<input type="checkbox" data-target="thing2" checked="1"/> 
<div id="thing2">Thing 2</div> 

С этим JQuery:

$(document).ready(function() { 
    $('input[type=checkbox][data-target]').change(function() { 
     var checked = $(this).prop('checked'); 
     var target = $(this).data('target'); 
     $('#' + target).toggle(checked); 
    }); 
});