У меня есть простой скрипт html и jquery, как показано ниже, я пытаюсь получить разделенный запятыми список идентификаторов элементов данных, поэтому он будет выглядеть так...
1,2,3,4,5
var items = $('.container').children();
console.info(items);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "container">
<div class = "item" data-item-id = "1">Item 1</div>
<div class = "item" data-item-id = "2">Item 2</div>
<div class = "item" data-item-id = "3">Item 3</div>
<div class = "item" data-item-id = "4">Item 4</div>
<div class = "item" data-item-id = "5">Item 5</div>
</div>
Я схватил элементы, но как я могу преобразовать это в строку, разделенную запятыми?
Сопоставьте каждый элемент с его item-id
, затем соедините запятыми:
var items = $('.container')
.children()
.map(function() { return $(this).data('item-id') })
.get()
.join(',');
console.info(items);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "container">
<div class = "item" data-item-id = "1">Item 1</div>
<div class = "item" data-item-id = "2">Item 2</div>
<div class = "item" data-item-id = "3">Item 3</div>
<div class = "item" data-item-id = "4">Item 4</div>
<div class = "item" data-item-id = "5">Item 5</div>
</div>
Но нет необходимости в большой библиотеке, такой как jQuery, для выполнения такой тривиальной задачи, если вы хотите:
const items = Array.from(
document.querySelectorAll('.container > .item'),
div => div.dataset.itemId
)
.join(',');
console.info(items);
<div class = "container">
<div class = "item" data-item-id = "1">Item 1</div>
<div class = "item" data-item-id = "2">Item 2</div>
<div class = "item" data-item-id = "3">Item 3</div>
<div class = "item" data-item-id = "4">Item 4</div>
<div class = "item" data-item-id = "5">Item 5</div>
</div>
Другой альтернативой JQuery
может быть использование .каждый() для обхода items
при захвате data-item-id
с помощью .данные() и добавлении его в строку.
$(document).ready(function()
{
var itemList = "";
$('.container .item').each(function()
{
itemList += $(this).data('item-id') + ",";
});
console.info("Ids:", itemList.slice(0,-1));
});
.as-console {background-color:black !important; color:lime;}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "container">
<div class = "item" data-item-id = "1">Item 1</div>
<div class = "item" data-item-id = "2">Item 2</div>
<div class = "item" data-item-id = "3">Item 3</div>
<div class = "item" data-item-id = "4">Item 4</div>
<div class = "item" data-item-id = "5">Item 5</div>
</div>
Потому что кто бы не хотел добавить еще и деструктуризацию..... (престижность CertainPerformance)
const items = Array.from(
document.querySelectorAll('.container > .item'),
({ dataset: { itemId: i } }) => i
)
.join(',');
console.info(items);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "container">
<div class = "item" data-item-id = "1">Item 1</div>
<div class = "item" data-item-id = "2">Item 2</div>
<div class = "item" data-item-id = "3">Item 3</div>
<div class = "item" data-item-id = "4">Item 4</div>
<div class = "item" data-item-id = "5">Item 5</div>
</div>
let itemsIds = [...document.getElementsByClassName("item")]
.map(elem => elem.getAttribute("data-item-id"))
.join(',');
console.info(itemsIds);
<div class = "container">
<div class = "item" data-item-id = "1">Item 1</div>
<div class = "item" data-item-id = "2">Item 2</div>
<div class = "item" data-item-id = "3">Item 3</div>
<div class = "item" data-item-id = "4">Item 4</div>
<div class = "item" data-item-id = "5">Item 5</div>
</div>