我有一个jQuery事件处理程序,单击它时,会根据收藏链接列表创建一个javascript对象:
$('#saveFavorites').on('click', function(){
alert("Got inside saveFavorites");
var myFavorites = {id:null, favorites:[]};
myFavorites['id']= someNumber;
$('#favoritesList').find('a').each(function(i){
console.log(i + ":" + $(this).html());
myFavorites['favorites'].push({
i:$(this).html()
});
});
console.log(JSON.stringify(myFavorites));
});
问题在于我在这里输出:
console.log(i + ":" + $(this).html());
输出是我想要的:
0:Test1
1:Test2
但是当我对对象进行字符串化时:
console.log(JSON.stringify(myFavorites));
我的输出是“i”而不是它代表的字符串化整数。
{"id":"11111111","favorites":[{"i":"Test1"},{"i":"Test2"},{"i":"Test3"},{"i":"Test4"}]}
我假设推功能认为我的i是字符串“i”。有没有办法完成我需要做的事情?
答案 0 :(得分:1)
尝试
$('#favoritesList').find('a').each(function(i, val){
console.log(i + ":" + $(this).html());
myFavorites['favorites'][i] = $(this).html();
});
答案 1 :(得分:0)
想出来。诀窍是在推送之前创建对象:
$('#favoritesList').find('a').each(function(i){
//console.log(i + ":" + $(this).html());
var obj = {};
var id = $(this).attr("id");
obj[id] = $(this).html();
myFavorites['favorites'].push(obj);
});