0

我有这样的 div :

<div id="something-1" data-options='{"pause":"YES","delete":"NO", "kill":"NO"}'></div>

我正在做的是一些 ajax 请求并像这样更改数据选项:

$('#something-1' + item.id).attr("data-options", '{"pause":"YES","delete":"YES", "kill":"NO"}');

当我用 firebug 检查时,我可以在 html 中看到更改的数据选项。

然后我有这个“测试”功能,我从 firebug 触发,以查看在 ajax 更新后数据是否发生了变化:

(function() {
        window.checkChanges = checkChanges;
        function checkChanges(id) {
        var dataOptions = $("#" + id).data('options');

        for(var index in dataOptions) {
            console.log(index,dataOptions[index]);
        };
        }
    })();

但是由于某种原因,在 ajax 请求之前和之后的数据选项是相同的。我需要以某种方式将实时功能纳入其中吗?或者别的什么,但我不知道是什么?有什么建议么?

编辑

Ajax 请求更改删除到YES

4

2 回答 2

1

您是否可能混淆了所选 div 的 ID?在您的虚假 ajax 请求中,您在检查中不存在的“某物”之后添加了一个 item.id。然后它工作得很好。

http://jsfiddle.net/EVyVT/

charlietfl 指出您可以省略对象周围的引号,但我认为它也适用于引号。

于 2012-10-18T11:37:10.470 回答
0

删除包裹您尝试设置的对象的引号,options以便您将对象而不是字符串传递给data

$(selector).attr("data-options", {"pause":"YES","delete":"YES", "kill":"NO"});

演示:http: //jsfiddle.net/8A3LE/

仅更改一个值的另一种方法

$(selector).data('options').delete='YES'
于 2012-10-18T11:26:21.530 回答