按data =属性过滤元素

时间:2011-12-09 17:53:02

标签: javascript jquery

我有一个案例,我需要按元素和所有方式进行过滤;差不多了。

有一个用户可以选择的颜色列表。可以选择多种颜色。每个元素都可以分配一个或多个这些属性。

属性示例:

<div data-wotc-color="G">
<div data-wotc-color="B">
<div data-wotc-color="U">
<div data-wotc-color="UB">
<div data-wotc-color="U">
<div data-wotc-color="W">

在JQuery中我通过使用filter()来显示/隐藏

$.each($('.colorpicker a'), function() {
    if ($(this).hasClass('selected')) {
            $('.pac').filter('[data-wotc-color*="' + $(this).attr('id') + '"]').show();
        } else {
            $('.pac').filter('[data-wotc-color*="' + $(this).attr('id') + '"]').hide();
        }
    });

基本上发生了什么(据我所见),当你选择一个元素时,它可以显示/隐藏元素。选择多个时,只要您按正确的顺序选择它,它就会正确显示/隐藏。我知道这里可能需要某种正则表达式,但我并不完全确定如何使用JQuery实现它。

1 个答案:

答案 0 :(得分:1)

问题是,对于 每个 锚点,您 隐藏 可能已经存在的一些元素(合法地)表现出来。

相反,隐藏所有内容,然后显示所选颜色的内容:

// Hide EVERYTHING
$('.pac').hide();

// Now show everything that matches:
$('.colorpicker a.selected').each(function() {
    $('.pac').filter('[data-wotc-color*="' + $(this).attr('id') + '"]').show();
});
相关问题