简体   繁体   English

jQuery将元素ID转换为逗号分隔的字符串

[英]jQuery convert element ids into comma seperated string

I have a simple html and jquery script like below, I am trying to get a comma seperated list of data-item-id so would look like... 我有一个简单的html和jquery脚本,如下所示,我试图获取以逗号分隔的data-item-id列表,因此看起来像...

1,2,3,4,5

 var items = $('.container').children(); console.log(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> 

I have grabbed the items but how can I convert this into the comma seperated string? 我已经抓住了这些物品,但是如何将其转换成逗号分隔的字符串呢?

Map each item to its item-id , then join by commas: 将每个项目映射到其item-id ,然后以逗号加入:

 var items = $('.container') .children() .map(function() { return $(this).data('item-id') }) .get() .join(','); console.log(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> 

But there's no need for a big library like jQuery to accomplish something this trivial, if you want: 但是,如果您愿意的话,不需要像jQuery这样的大型库来完成一些琐碎的事情:

 const items = Array.from( document.querySelectorAll('.container > .item'), div => div.dataset.itemId ) .join(','); console.log(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> 

Another alternative with JQuery could be using .each() to traverse the items while grabbing the data-item-id with .data() and adding it to a string. JQuery另一种选择是使用.each()遍历items同时使用.data()抓取data-item-id并将其添加到字符串中。

 $(document).ready(function() { var itemList = ""; $('.container .item').each(function() { itemList += $(this).data('item-id') + ","; }); console.log("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> 

Because who wouldn't want to add destructuring as well ..... (Kudos to CertainPerformance) 因为谁也不想添加解构.....(对SomePerformance表示感谢)

 const items = Array.from( document.querySelectorAll('.container > .item'), ({ dataset: { itemId: i } }) => i ) .join(','); console.log(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> 

You can also apply some features of ES5 and ES6 for a shorter solution. 您还可以应用ES5和ES6的某些功能来缩短解决方案。 And without jQuery . 而且没有jQuery

 let itemsIds = [...document.getElementsByClassName("item")] .map(elem => elem.getAttribute("data-item-id")) .join(','); console.log(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> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM