Как получить данные из атрибута данных html5, который находится в списке выбора, в массив?

Я должен в основном загрузить некоторые данные с загрузкой формы, чтобы использовать в операциях JavaScript на странице. Я загружаю данные, как показано ниже:

<select id="allrecords">
 <option data-s-type="X" data-n-type="9" value="xxx">xxx</option>
 <option data-s-type="X" data-n-type="9" value="lmn">lmn</option>
 <option data-s-type="X" data-n-type="8" value="xyz">xyz</option>
 <option data-s-type="Y" data-n-type="3" value="zzz">zzz</option>
...
</select>

Исходя из этих данных, свойства data-s-type и data-n-type используются для определения того, какие значения будут добавлены в массив, который впоследствии будет использоваться в программе. Я не могу придумать, как получить этот массив, используя этот список выбора.

например, когда data-s-type="X" И data-n-type=9, array = [xxx,lmn]

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

1 ответ

Решение

$.map создает массивы, и внутри функции вы проверяете нужные значения, а если они совпадают, вы возвращаете значение элементов в массив, например, так:

var arr = $.map($('#allrecords option'), function(el,i) {
    if ($(el).data('s-type') == 'X' && $(el).data('n-type') == '9') 
      return el.value;
});

arr //is now ['xxx', 'lmn']

FIDDLE

Другие вопросы по тегам