jQuery,.data('X')返回一个值而不是数组

时间:2016-05-11 03:43:32

标签: jquery

我有这个问题。

$(".myClass");

返回

[
<div class='myClass' data-hotel='1' style='myStyle'></div>
<div class='myClass' data-hotel='2' style='myStyle'></div>
<div class='myClass' data-hotel='3' style='myStyle'></div>
]

为什么$(".myClass").data('hotel');只返回'1'?

我尝试$(".myClass").data();但返回Object {hotel: 1}

3 个答案:

答案 0 :(得分:2)

根据文档 data(key) 返回第一个元素值:

  

存储与匹配元素关联的任意数据,或在指定数据存储中返回匹配元素集中第一个元素的值

使用 map() 迭代元素并在回调中返回所需的数据。使用 get() 获取结果数组。

&#13;
&#13;
var res = $(".myClass").map(function() {
  return $(this).data('hotel');
}).get();

console.log(res);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class='myClass' data-hotel='1' style='myStyle'></div>
<div class='myClass' data-hotel='2' style='myStyle'></div>
<div class='myClass' data-hotel='3' style='myStyle'></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

&#13;
&#13;
var arr = [];
var div = $('.myClass')
$.each(div, function() {
  arr.push($(this).data('hotel'))
})

console.log(arr)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='myClass' data-hotel='1' style='myStyle'></div>
<div class='myClass' data-hotel='2' style='myStyle'></div>
<div class='myClass' data-hotel='3' style='myStyle'></div>
&#13;
&#13;
&#13;

遍历每个div

答案 2 :(得分:0)

您需要执行.each循环来检索所有值,并将它们推送到数组中 -

var values = [];
$('.myClass').each(function(i, obj) {
   values.push(obj);// can also use attr data-hotel
});

希望这会对你有所帮助。