我有一个字符串:
<span class="someClass" id="skAdmin" data-options='{
"elmsList" : {
"#skAdmin" : {
"action" : "replace",
"replaceWith" : "<input class=\"form-control\">"
}
}
}'>Name</span>
现在(当我点击这个 span 时)我需要在数据选项(输入中按元素替换此元素( span ) EM>)。同时我需要将所有 span 属性添加到 input 元素,但 input 只是一个文本(不是对象)。如何将其转换为对象?
答案 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)
});