2013-03-23 35 views
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; 
}); 
+0

適用於我:http://jsfiddle.net/awNdC/(line 16) – valtron 2013-03-23 01:35:12

+0

@valtron - 很高興知道我獲得了正確的語法;-)我怎樣才能使用它來過濾數據屬性而不是按類? – 2013-03-23 01:40:54

+0

@raphaelvalerio - 我無法對你的文章發表評論,因爲你已經刪除了它,但是我想給你留個言,告訴我我的語法有什麼問題(我錯過了關於數據庫中值的引號 - 顏色屬性):-D – 2013-03-23 02:55:59

回答

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; 
    }); 
}); 

注意,你在你的提琴「全部」,這將不符合比較「所有」。

+0

OMG!這是完美的:-D而我的壞在錯亂的錯字(我責怪它的頭痛,我試圖弄清楚這一點;-)) – 2013-03-23 01:45:46

+0

:)很高興我能幫助! – 2013-03-23 01:48:38