我有一个 JSON string 这样的对象数组。
[{"id":"4","rank":"adm","title":"title 1"},
{"id":"2","rank":"mod","title":"title 2"},
{"id":"5","rank":"das","title":"title 3"},
{"id":"1","rank":"usr","title":"title 4"},
{"id":"3","rank":"ref","title":"title 5"}]
一旦id匹配,我想更改它的标题值。因此,如果我的变量myID是5,我想将标题“title 5”更改为新标题,依此类推。然后我将新的JSON数组转换为$("#rangArray").val(jsonStr);
像
这样的东西$.each(jsonStr, function(k,v) {
if (v==myID) {
this.title='new title'; $("#myTextArea").val(jsonStr);
}
});
这是完整的代码。
$('img.delete').click(function() {
var deltid = $(this).attr("id").split('_');
var newID = deltid[1];
var jsonStr = JSON.stringify(myArray);
$.each(jsonStr, function(k,v) {
if (v==newID) {
// how to change the title
jsonStr[k].title = 'new title';
alert(jsonStr);
$("#rangArray").val(jsonStr);
}
});
});
以上不起作用。有什么帮助吗?
答案 0 :(得分:1)
试试这个:
$.each(jsonStr, function(i,v) {
if ( v.id == myID ) {
v.title = 'new title';
return false;
}
});
现场演示: http://jsfiddle.net/CVvW4/1/
完全剪断(我的代码已实现):
$('img.delete').click(function() {
var newID = $(this).attr('id').split('_')[1];
$.each(myArray, function(i,v) {
if ( v.id == newID ) {
v.title = 'new title';
$('#rangArray').val(jsonStr);
}
});
});
答案 1 :(得分:0)
尝试使用jsonStr[k].title = 'new title';
答案 2 :(得分:0)
你应该做jsonStr[v].title = "new title";
您的jsonStr
是一个对象数组。