jquery不会选择数据选项更改

时间:2012-10-18 11:18:19

标签: javascript jquery

我有这样的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

2 个答案:

答案 0 :(得分:1)

你有可能混淆所选div的ID吗?在您的假ajax请求中,您在检查中不存在的“内容”之后添加了一个item.id.然后就可以了。

http://jsfiddle.net/EVyVT/

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

答案 1 :(得分:0)

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

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

DEMO:http://jsfiddle.net/8A3LE/

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

$(selector).data('options').delete='YES'