我有一个新闻Feed,其中Feed中的项目是从服务器返回的JSON创建的。当用户对某个项目执行操作时,我想通过javascript将其从对象中删除。
Feed看起来像这样:
{"newsFeed":[{"feedId":"1",
"title":"item1 title",
"desc":"description of the item"},
{"feedId":"2",
"title":"item2 title",
"desc":"description of the item"}]}
我正在尝试使用jQuery删除通过变量传入feedId
的JSON属性或条目。我不确定这里到底出了什么问题,但是当我在移除物体之前和之后提醒饲料时,我得到的回答相同:
function removeFromFeed(feedId){
var newsFeed=jQuery('div#newsFeed').data('newsFeed');
alert(newsFeed.toSource());
delete newsFeed.feedId[feedId]
jQuery('div#newsFeed').data('newsFeed',newsFeed);
alert(newsFeed.toSource());
}
答案 0 :(得分:1)
如果我正确地告诉你,你想要删除,例如如果调用{"feedId":"1", "title":"item1 title", "desc":"description of the item"}
,则整个条目removeFromFeed(1)
。
所以我们需要做的是从数组中删除一个条目。
现在应该可以使用的新版本。 (顺便说一下。这个toSource()
我的浏览器不知道这个方法是什么意思)
//http://ejohn.org/blog/javascript-array-remove/
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
function removeFromFeed(feedId){
var data = jQuery('div#newsFeed').data('newsFeed');
var len = data.newsFeed.length;
for (var i = 0; i < len; i++) {
if (data.newsFeed[i].feedId == feedId) {
data.newsFeed.remove(i);
break;
}
}
jQuery('div#newsFeed').data('newsFeed', data);
}
演示:http://jsbin.com/ekali3(代码视图:http://jsbin.com/ekali3/edit)
答案 1 :(得分:0)
我不确定为什么'Array.prototype.remove'的东西会破坏我的页面,但是我创建了一个新的数组,只是遗漏了我想删除的对象。
var newsFeed=jQuery('div#newsFeed').data('newsFeed');
var newFeed={"feed":[]};
alert(newsFeed.toSource());
for (var i = 0; i < newsFeed.length; i++) {
if(newsFeed.feed[f].shiftId!=shiftId){
newFeed.feed.push(newsFeed.feed[f]);
}
}
似乎有效。