如何使用jQuery传递元素数组以及保留data
属性?目前我有以下内容:
$('body').on('click', '.selectItem', function() {
data: {
'hash': $(this).data("hash"),
'id': $(this).data("id"),
'inspect': $(this).data("inspect"),
'stickers': $(this).data("stickers")
}
});
我怎么能这样做?
$('.getItems').click(function(event) {
data: {
'items': $('.selectItem').andAttributes().toArray()
}
});
我猜我可以做foreach
&然后将它们添加到每个元素的数组中,但jQuery没有一个简单的解决方案吗?
我做 {/ em> $('.selectItem').andAttributes().toArray()
之类的预期结果将是这样的:
{
0: {
'hash': $(this).data("hash"),
'id': $(this).data("id"),
'inspect': $(this).data("inspect"),
'stickers': $(this).data("stickers")
},
1: {
'hash': $(this).data("hash"),
'id': $(this).data("id"),
'inspect': $(this).data("inspect"),
'stickers': $(this).data("stickers")
}
2: {
'hash': $(this).data("hash"),
'id': $(this).data("id"),
'inspect': $(this).data("inspect"),
'stickers': $(this).data("stickers")
}
etc....
}
答案 0 :(得分:2)
您可能正在寻找map
(jQuery' s,而不是数组' s)与get
相结合(以获得实际数组)。您还可以使用data
的无参数版本来获取从以下位置选择这些属性的对象:
var a = $(/*...selector for elements...*/).map(function() {
var data = $(this).data(); // Get the data as an object
// Grab the properties from it you want
return {
'hash': data.hash,
'id': data.id,
'inspect': data.inspect,
'stickers': data.stickers
}
}).get();
a
将是一个包含属性hash
,id
等的对象数组。
(顺便说一下:无需将这些属性名称放在引号中。)
实例(只有几个attrs):
var a = $(".stuff").map(function() {
var data = $(this).data();
return {
hash: data.hash,
id: data.id/*,
inspect: data.inspect,
stickers: data.stickers*/
}
}).get();
console.log(a);

.as-console-wrapper {
max-height: 100% !important;
}

<div class="stuff" data-id="one" data-hash="hash one"></div>
<div class="stuff" data-id="two" data-hash="hash two"></div>
<div class="stuff" data-id="three" data-hash="hash three"></div>
<div class="stuff" data-id="four" data-hash="hash four"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
不带参数的.data()
方法将返回包含所有数据属性的对象。使用.map()
迭代匹配选择器的所有元素,并.get()
将结果集合转换为数组。
data: $('.selectItem').map(function() {
return $(this).data();
}).get()