2013-10-08 162 views
0

我試圖使用複選框來過濾頁面內容。當我選中該框時,我隱藏了內容,但未選中時它不會再顯示所有內容。任何幫助將不勝感激。先謝謝你。的Javascript過濾器使用複選框

$(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(「選中」)' – stevemarvell

+0

@stevemarvell爲什麼? '.prop('checked')'返回'.checked'屬性的值,即'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); 
    }); 
});