首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JQuery从列表中获取所有数据属性

JQuery从列表中获取所有数据属性
EN

Stack Overflow用户
提问于 2013-06-27 22:59:46
回答 3查看 34.7K关注 0票数 25

我有一个很长的动态生成的列表,每个列表都有相同的类标识符和数据属性,类似于下面的代码:

代码语言:javascript
复制
<ul>
    <li class="list" data-id="123">One</li>
    <li class="list" data-id="124">Two</li>
    <li class="list" data-id="125">Three</li>
    <li class="list" data-id="126">Four</li>
    .....etc
</ul>

我想要实现的是获得所有的data-id值,并将它们格式化为:

代码语言:javascript
复制
123|124|125|126....etc

这将通过ajax传递到页面,并检查id是否存在于数据库中。

代码语言:javascript
复制
var delimited_data="";
$('.list').each(function(){
    delimited_data+=$(this).data('id')+"|";
});
console.log(delimited_data);

我问这个问题的原因是,我正在使用一个实时系统,该系统在10分钟后自动将列表列中的项目部署到不同的用户。我只需要确保代码运行正确:)

我还需要检查是否有在页面上没有.list类(即-没有办法做查询),是否delimited_data将是完全空的,我很确定它会。

在这种情况下,有没有比使用.each()更好的方法,因为我发现它可能相当慢,因为上面的函数将每30秒运行一次。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-27 23:01:40

您可以使用.map返回一个数组:

代码语言:javascript
复制
var dataList = $(".list").map(function() {
    return $(this).data("id");
}).get();

console.log(dataList.join("|"));

演示:http://jsfiddle.net/RPpXu/

票数 60
EN

Stack Overflow用户

发布于 2013-06-27 23:05:01

使用以下命令:

代码语言:javascript
复制
var array = [];

$('li.list').each(function() {
  array.push($(this).data('id'));
})

var joined = array.join('|');
票数 6
EN

Stack Overflow用户

发布于 2014-03-15 00:13:56

不是你问题的答案,但这就是我在这个页面上搜索的结果,尽管它会对其他人有所帮助:-)

代码语言:javascript
复制
var arrayOfObj = $('input').map(function() {

  return {
            name : $(this).attr('name'),
            data : $(this).data('options'),
            value : $(this).val(),
            id : $(this).attr('id')
         }

}).get();
console.log(arrayOfObj)

这将返回一个模拟输入的对象数组

干杯!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17346640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档