将数据属性数组转换为对象

时间:2014-06-11 22:05:02

标签: javascript jquery arrays html5 custom-data-attribute

我正在使用HTML5 data属性设置数组,如下所示:<dl data-options='[{ "multiExpand": true} ]'> 并使用jQuery抓取它:var options = $this.data('options')[0]

它有效,但我希望不再需要标记中的括号。我想写<dl data-options="multiExpand: true; otherOption: false;">

如何更改JS以获取该格式?我一直在尝试.makeArray.toJSON,但他们会返回undefined

1 个答案:

答案 0 :(得分:4)

您真正需要的只是属性中的有效JSON,jQuery会将其转换为对象

<dl data-options='{"multiExpand":true,"otherOption":false}'>

FIDDLE

如果你只需要使用那种无效的语法,你必须自己解析它,比如

var arr = $('#test').data('options').split(';').filter(Boolean),
    obj = (function() {
        var o = {};
        $.each(arr, function(_,v) {
            var parts = v.split(':');
            o[$.trim(parts[0])] = $.trim(parts[1]);
        });
        return o;
    }());

FIDDLE