jQuery сохранение атрибута в массив или объект между двумя классами

#jquery

#jquery

Вопрос:

У меня есть следующая разметка.

 <div class="block" my_id="1">1</div>
<div class="block first" my_id="2">2</div>
<div class="block" my_id="3">3</div>
<div class="block" my_id="4">4</div>
<div class="block last" my_id="5">5</div>
<div class="block" my_id="6">6</div>
  

Я хочу выбрать значения для my_id промежуточных first last классов и и сохранить их в объекте. В этом случае это будет 2,3,4,5.

  var number_store = [];
 $('.first').nextUntil('last').attr('my_id')//??
  

Как бы мне этого добиться?

Спасибо!

Ответ №1:

my_id недопустимый атрибут HTML. Вы должны использовать data-* атрибуты для хранения пользовательских значений.

Используйте .andSelf() метод jQuery для включения обоих .first .last элементов, и .


РЕДАКТИРОВАТЬ (спасибо за комментарий)

.andSelf()
Эта функция устарела и теперь является псевдонимом для .addBack() , который следует использовать с jQuery 1.8 и более поздними версиями.

 var number_store = $('.first').nextUntil('.last').addBack().next().addBack().map(function(){
  return $(this).attr('data-id');
}).get();

console.log(number_store);  
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="block" data-id="1">1</div>
<div class="block first" data-id="2">2</div>
<div class="block" data-id="3">3</div>
<div class="block" data-id="4">4</div>
<div class="block last" data-id="5">5</div>
<div class="block" data-id="6">6</div>  

number_store будет содержать массив.


Другие ссылки:

Комментарии:

1. Спасибо за подробное объяснение. Что, если я хочу сохранить data-id 2 и 5? (идентификатор данных из «.first» и «.last»)

2. Спасибо за ответ. Похоже .andSelf() , что он устарел и «теперь является псевдонимом для .addBack() , который следует использовать с jQuery 1.8 и более поздними версиями». Спасибо. Получилось.

3. @steveKim Спасибо за комментарий. Я упустил из виду, что он устарел. Обновленный ответ

Ответ №2:

вы можете использовать .each() и добавить значение атрибута в массив, например.

 var number_store = [];
$('.first').nextUntil('last').each(function(){
    number_store.push($(this).attr('my_id'));
});