0

我有一个像这样的字符串:

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

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

4

2 回答 2

2

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

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

// or

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

编辑

正如评论所指出的,如果您已经在使用 jQuery,则所有data-*属性都将被解析为 jQuery 的dataobject。因此,您只需使用以下命令即可访问它:

var obj = $( '#skAdmin' ).data( 'options' );
于 2013-10-29T13:15:29.633 回答
1

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

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

示例小提琴

于 2013-10-29T13:17:55.980 回答