0

チェックボックスを使用してページ コンテンツをフィルタリングしようとしています。チェックボックスをオンにするとコンテンツが非表示になりましたが、チェックを外すとすべてのコンテンツが再び表示されるわけではありません。どんな助けでも大歓迎です。前もって感謝します。

$(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');}
});
});
4

3 に答える 3

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);
    });
});
于 2013-10-08T17:25:42.873 に答える
0

.attr()メソッドはブール値を返さず、=代入でもあります。値を比較しません。比較には==or===演算子を使用する必要があります。

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();
    } 
});
于 2013-10-08T17:26:19.150 に答える