#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'));
});