0

すべてのフィルターが削除されたときに、この関数をすべての表示に戻すにはどうすればよいですか?

に変更if (attrColor == 'All') {...}してみましたif (attrColor == 'All' || attrColor == '') {...}

関数の簡単な例をフィドルに投稿しました: http://jsfiddle.net/chayacooper/WZpMh/88/

$(document).ready(function () {
    var selected = [];
    $('#attributes-Colors *').click(function () {
        var attrColor = $(this).data('color');
        var $this = $(this);
        if ($this.parent().hasClass("active")) {
            $this.parent().removeClass("active");
            selected.splice(selected.indexOf(attrColor),1);
        }
        else {
            $this.parent().addClass("active");
            selected.push(attrColor);
        }
        if (attrColor == 'All') {
            $('#content').find('*').show();
        } else {
        $("#content").find("*").hide();
        $.each(selected, function(index,item) {
            $('#content').find('[data-color *="' + item + '"]').show();
        });
        }
        return false;
    });
});   
4

1 に答える 1

1

これを参照してください:デモ

if (attrColor == 'All' || !selected.length) {
    $('#content').find('*').show();
} else {
    $("#content").find("*").hide();
    $.each(selected, function (index, item) {
        $('#content').find('[data-color *="' + item + '"]').show();
    });
}

編集:

@ArunPJohny の提案に従って更新します。

.children()セレクターを使用すると、 * セレクターより子liの sを取得する方が良いでしょう

if (attrColor == 'All' || !selected.length) {
    $('#content').children().show();
} else {
    $("#content").children().hide();
    $.each(selected, function (index, item) {
        $('#content').find('[data-color *="' + item + '"]').show();
    });
}
于 2013-03-27T06:43:46.973 に答える