JS - 将字符串从data-attribute转换为object

时间:2013-10-29 13:12:52

标签: javascript jquery

我有一个字符串:

<span class="someClass" id="skAdmin" data-options='{
   "elmsList" : {
      "#skAdmin" : {
         "action" : "replace",
         "replaceWith" : "<input class=\"form-control\">"
         }
      }
   }'>Name</span>  

现在(当我点击这个 span 时)我需要在数据选项(输入中按元素替换此元素( span ) EM>)。同时我需要将所有 span 属性添加到 input 元素,但 input 只是一个文本(不是对象)。如何将其转换为对象?

2 个答案:

答案 0 :(得分:2)

使用JSON.parse()检索对象:

var obj = JSON.parse( document.querySelector( '#skAdmin' ).dataset.options );

// or

var obj = JSON.parse( document.getElementById( 'skAdmin' ).dataset.options );

修改

如评论所述,如果您已经在使用jQuery,all data-* attributes will already be parsed into jQuery's data object。所以你可以通过使用:

来访问它
var obj = $( '#skAdmin' ).data( 'options' );

答案 1 :(得分:1)

您不需要解析此值,因为当jQuery将其存储在内存缓存中时,jQuery已经为您完成了此操作。因此,您可以像对象一样访问它:

$('.someClass').click(function() {
    var replaceWith = $(this).data('options').elmsList['#skAdmin'].replaceWith;
    $(this).replaceWith(replaceWith)
});

Example fiddle