我无法将对象推送到阵列,我无法弄清楚原因。此时,结果(记录)重复每个循环的最后一个实例。
<div data-provider="prv1"></div>
<div data-rating="rtn1"></div>
<div data-price="prc1"></div>
<div data-provider="prv2"></div>
<div data-rating="rtn2"></div>
<div data-price="prc2"></div>
<div data-provider="prv3"></div>
<div data-rating="rtn3"></div>
<div data-price="prc3"></div>
<div data-provider="prv4"></div>
<div data-rating="rtn4"></div>
<div data-price="prc4"></div>
(function(){
var sort = $(".sort select");
var provider = $("[data-provider]");
var rating = $("[data-rating]");
var price = $("[data-price]");
var records = [];
var record = {};
$(provider).each(function(index, value){
record.provider = $(provider).eq(index).data("provider");
record.rating = $(rating).eq(index).data("rating");
record.price = $(price).eq(index).data("price");
records[index] = record;
});
})();
答案 0 :(得分:2)
在循环中,将每个索引设置为等于记录。由于记录范围是匿名函数,因此它对于每个索引都是相同的对象。
您想要的范围是提供给.each
$(provider).each(function(index, value){
var record = {};
...
});