我在页面上有以下主题:
<a href="#" data-json='{"first":"SGVsbG8=","last":"V29ybGQ=","mail":"aGVsbG9Ad29ybGQuY29t","favorite":"eWVz","answer":"VGhpcyBpcyBteSBhbnN3ZXJzIQ==","id":"MQ==","read":"yes"}'>Hello</a>
<a href="#" data-json='{"first":"SGVsbG8=","last":"V29ybGQ=","mail":"aGVsbG9Ad29ybGQuY29t","favorite":"eWVz","answer":"VGhpcyBpcyBteSBhbnN3ZXJzIQ==","id":"MQ==","read":"no"}'>Hello</a>
我想要的是将read
值为no
first
值更改为SGVsbG8=
我试过以下但没有工作:
($('.usr-list a').data('json').first == 'SGVsbG8=').each(function(i){$(this).data('json').read('no')});
这可能吗?
答案 0 :(得分:1)
是的,这是可能的。比较结果($('.usr-list a').data('json').first == 'SGVsbG8=')
是一个布尔值,没有each
方法,用于过滤应迭代它们的元素并读取它们的data-json
属性:
$('a').each(function () {
var o = $(this).data('json');
if (o.first === 'SGVsbG8=') {
o.read = 'no';
}
});
请注意,上述代码段不会更改data-json
属性。解析data
属性后,jQuery data-*
方法在内部存储它们。如果要在修改属性后更改属性,则应对JSON进行编码并重置属性。
this.setAttribute('data-json', JSON.stringify(o));
答案 1 :(得分:1)
function updateJson(object) {
$("a").each(function() {
var json = $(this).data("json");
if(json["first"]==object["first"]) {
json["read"] = "no";
$(this).data("json",json);
}
});
}
updateJson({first : "SGVsbG8="});
这可用于此目的:)