2015-03-19 81 views
0

我正在使用複選框來隱藏/顯示列表中的項目。 每個項目都有一個數據標籤元素,其中包含一個或多個關鍵字。 例jquery attr()多個值

<li class="element" data-tag="business economic"> 

我的JQuery目前這個樣子

$('.element').each(function(){ 
     var item = $(this).attr('data-tag'); 
     if(jQuery.inArray(itemarray,topic_list) > -1) 
     $(this).fadeIn('slow'); 
     else 
     $(this).hide(); 

    }); 

這工作如果在數據標記一個元素,但如果有一個以上的,不顯示LI元素。我哪裏錯了?

+0

你沒有使用'item'? – 2015-03-19 11:21:35

+0

什麼是'itemarray'和'topic_list' – 2015-03-19 11:22:02

+0

使用'$(this).data('tag')' – efkah 2015-03-19 11:22:13

回答

0

如果topic_list爲您搜索data-tag屬性中的字符串:

jQuery('li[data-tag]').hide(); 
jQuery('li[data-tag~="' + topic_list + '"]').fadeIn('slow'); 

編輯

如果topic_list爲標籤的數組:

jQuery('li[data-tag]').hide(); 
for(var i = 0, l = topic_list.length; i < l; i++) { 
    var tag = topic_list[i]; 
    jQuery('li[data-tag~="' + tag + '"]').fadeIn('slow'); 
} 
+0

這似乎接近,但如果商業和經濟都檢查,沒有顯示。是我更新的代碼'$('。element')。each(function(){('li [data-tag]')。hide(); $('li [data-tag_ ='+ topic_list +']')。fadeIn('slow'); }); ' – 2015-03-19 12:40:33

+0

好吧,這是很容易的解決方案,但是當兩者都被檢查'topic_list'的值是什麼?它是一個數組''''商業','經濟']還是一個字符串'商業經濟'? – abidibo 2015-03-19 12:58:15

+0

也都會在檢查時出現錯誤'未捕獲錯誤:語法錯誤,無法識別的表達式:li [數據標籤〜=商業,經濟]' – 2015-03-19 13:00:02

0

嘗試

$('.element').each(function(){ 
    var tags = $(this).data('tag'); 
    if(tags.contains(topic_list)) 
    $(this).fadeIn('slow'); 
    else 
    $(this).hide(); 

}); 
+0

業務,經濟等動態生成,我不知道他們是什麼 – 2015-03-19 12:52:04