2011-12-09 52 views
2

我有一種情況,我需要按元素和所有方法進行過濾;幾乎奏效。通過數據=屬性過濾元素

有一個用戶可以選擇的顏色列表。可以選擇多種顏色。每個元素可以有一個或多個屬性分配給它。

屬性例子:

<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中,我這樣做是爲了顯示使用過濾器()/隱藏:

$.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

什麼是你的問題?請提供http://jsfiddle.net演示。 –

回答

1

的問題是,對於每個錨你隱藏一些可能已經被元素(合法)表示。

相反,隱藏的一切,然後顯示那些所選顏色:

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

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

我知道這將是一個簡單的修復,並感謝您指出$ .each中的a.selected。很高興能夠切出一條線:) –