2

この表示/非表示機能をクラスではなくデータ属性で使用したいのですが、構文を正しく理解するのに苦労しています。

私はそれがこのようなものであることを知ってい$("li[data-color=" + this.value + "]").show();ますが、それを機能させたり、機能するように機能を変更したりすることができませんでした。

さまざまな属性 (つまり、色、製品カテゴリ、機会など) で衣類をフィルター処理する関数を使用しています。ここに簡単な例のフィドルを投稿しました: http://jsfiddle.net/chayacooper/WZpMh /4/

$('#filterOptions li a').click(function () {
    var ourClass = $(this).attr('class');
    $('#filterOptions li').removeClass('active');
    $(this).parent().addClass('active');
    if (ourClass == 'all') {
        $('#content').find('.item').show();
    } else {
        $('#content').find('.item:not(.' + ourClass + ')').hide();
        $('#content').find('.item.' + ourClass).show();
    }
    return false;
});
4

1 に答える 1

5

実際の例については、このフィドルを参照してください: http://jsfiddle.net/Cr2cY/

$(document).ready(function () {
    $('#filterOptions li a').click(function () {
        // fetch the class of the clicked item
        var ourDataAttr = $(this).data('color');
        // reset the active class on all the buttons
        $('#filterOptions li').removeClass('active');
        // update the active state on our clicked button
        $(this).parent().addClass('active');
        if (ourDataAttr == 'All') {
            // show all our items
            $('#content').find('.item').show();
        } else {
            // hide all elements that don't share ourClass
            $('#content').find('.item:not([data-color="' + ourDataAttr + '"])').hide();
            // show all elements that do share ourClass
            $('#content').find('.item[data-color="' + ourDataAttr + '"]').show();
        }
        return false;
    });
});

フィドルで「すべて」と「すべて」を比較していたことに注意してください。これは一致しません。

于 2013-03-23T01:38:23.360 に答える