2014-12-08 4 views
1

Как я могу проверить с jquery, если атрибут data имеет определенное значение. , например:Как проверить, имеет ли атрибут данных значение

data-categories="first-value second-value third-value" 

и я просто хочу, чтобы проверить, если он имеет second-value

::::::::: UPDATE ВОПРОС :::::::::::: I Я создаю навигацию фильтра portfilio, вот код.

var $container = $('#container'); 
    var $categoryNavBar = $('.category-navbar');  
    var getCurrentCategory = function(){ 
      var filter = $categoryNavBar.find('li[class=select]').data('category'); 
      return filter; 
    } 

    $categoryNavBar.on('click', 'a', function(evt){ 
     evt.preventDefault(); 

     var $this = jQuery(this); 

     if($this.parent('li').hasClass('select')){ 
      return; 
     } 

     $this.parent('li').addClass('select').siblings('li').removeClass('select'); 

     var elem = $container; 
     var filter = $this.parent('li').data('category'); 

     if(filter == 'all'){ 
      elem.children('div').show().addClass('hb_box hb-brick').css({'top': 200, 'left': 200}); 
     }else{ 
      elem.children('div[data-category="'+filter+'"]').show().addClass('hb_box hb-brick').css({'top': 200, 'left': 200}); 
      elem.children('div').not('.hb_box[data-category="'+filter+'"]') 
         .removeClass("hb_box hb-brick") 
         .hide(); 

     } 


    }); 
+0

Как вы пытались это сделать? Каков был результат? Вы просто хотите проверить, как выбрать элемент с атрибутом и управлять им дальше? – PeterKA

+1

Используйте '.split()', чтобы разбить его на массив, а затем '.indexOf()' для поиска массива. – Barmar

ответ

2

Вам нужен attribute contains selector ($("[attr*='foo']")):

elem.children('div[data-category*="'+filter+'"]').show().addClass('hb_box hb-brick').css({'top': 200, 'left': 200}); 
elem.children('div').not('.hb_box[data-category*="'+filter+'"]') 
        .removeClass("hb_box hb-brick") 
        .hide(); 
+0

Я не думаю, что OP означает, что «второе значение» представляет собой строку точно «второго значения», она выглядит как местозаполнитель. – SeanKendle

+0

Ты - Человек. Спасибо, много. – Ask4Tec

0

скажем string = 'first-value second-value third-value '

Вы можете разбить строку на "", который даст вам массив всех значений в вашем атрибуте данных:

array = string.split(" "); 

Тогда с некоторой простой логикой, вы можете узнать, если есть второе значение

if array[1] != undefined { 
    // do something 
} 
0

Если вы храните данные в атрибуте данных в виде массива, вы можете сделать ваши чеки так:

var secVal = 'second-value'; 
 

 
if($('div').data('categories').indexOf(secVal) > -1) { 
 
    alert('Has ' + secVal); 
 
} else { 
 
    alert('Does not have ' + secVal); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div data-categories="['first-value', 'second-value', 'third-value']"></div>

Смежные вопросы