2014-02-01 5 views
0

Что делает следующий код: возьмите выбранный жанр genre и проверьте, содержит ли он один из data, который является всеми массивами.Как доказать, содержит ли массив строку?

Пример:

genre = "comedy"; 
data = ["action", "comedy"] 

Я просто хочу, чтобы проверить, если data содержит "comedy":

$("header section").selectable({ 
    selected: function() { 
     var genre = $(".ui-selected").data("genre"); 
     console.log(genre); 
     $("body > section div").each(function() { 
      var data = $(this + ":contains('" + genre + "')").data("genre"); 
      if (data != genre) { 
       $(this).css("display", "none"); 
      } else { 
       $(this).css("display", "block"); 
      } 
    }); 
    } 
}); 

Я пытался сделать это с селектором "contains", но он не работает с this I думать.

+0

'data.indexOf (жанр)> -1'? – undefined

ответ

1

Вы можете сделать это:

$("header section").selectable({ 
    selected: function() { 

     var genre = $(".ui-selected").data("genre"); 
     var data = $("body > section div").map(function() { 
         return $(this).data("genre"); 
        }).get(); // creates an array 

     if($.inArray(genre, data) !== -1){//<--check if 'genre' exists in 'data' 
      $(this).css("display", "block"); 
     }else{ 
      $(this).css("display", "none"); 
     } 
    } 
}); 

О $.inArray():

  1. если элем будет найден возвращается индекс fou nd elem.
  2. если нет, то он вернется -1.
0

Вы можете использовать Array.indexOf() или использовать $.inArray() как это:

if($.inArray(genre, data) > -1){ 
    alert('contains') 
} 
Смежные вопросы