2013-10-08 6 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() 방법은 부울 값을 반환하지 않습니다도 = 당신은 ==를 사용해야합니다, 당신은 값을 비교하지 않는다, 과제입니다 또는 비교를 위해 === 연산자.

var $ch = $('input[type=checkbox]'); 
$ch.change(function() { 
    // show/hide the related `li` element 
    $('li[data-rec='+$(this).data('rec')+']').toggle(this.checked); 
    // show all `li` elements if there is no checked checkbox 
    if ($ch.filter(':checked').length === 0) { 
     $('li').show(); 
    } 
}); 
+0

'.prop ("checked")' – stevemarvell

+0

@stevemarvell을 사용해야합니다. 왜? '.prop ('checked')'는'.checked '속성의 값, 즉 this.checked를 반환합니다. 다른 점이 없다. – undefined

+0

그러나'.prop()'가 작업을 위해 만들어지고'.checked'는 문서화되지 않은 기능입니다. – stevemarvell

1

이것은 원하는 것의 기초입니다. 확인을 위해 prop에 유의하십시오. 이 jQuery로

<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> 

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

:

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