访问JQuery data-json元素

时间:2014-05-22 09:23:02

标签: javascript jquery json

我在页面上有以下主题:

<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

的锚点的data-json first值更改为SGVsbG8=

我试过以下但没有工作:

($('.usr-list a').data('json').first == 'SGVsbG8=').each(function(i){$(this).data('json').read('no')});

这可能吗?

2 个答案:

答案 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="});

这可用于此目的:)