我创建了一个内存 div:
var video_div = document.createElement('div');
video_div.className = "vidinfo-inline";
本质上我有一些变量:
var key = "data-video-srcs";
var value = '{"video1":"http://www.youtube.com/watch?v=KdxEAt91D7k&list=TLhaPoOja-0f4","video2":"http://www.youtube.com/watch?v=dVlaZfLlWQc&list=TLalXwg9bTOmo"}';
我使用 jquery 将该数据属性添加到 div:
$(video_div).attr(key, value);
这是我的问题。这样做之后,我得到了这个:
<div class="vidinfo-inline" data-video-srcs="{"video1":"http://www.youtube.com/watch?v=KdxEAt91D7k&list=TLhaPoOja-0f4","video2":"http://www.youtube.com/watch?v=dVlaZfLlWQc&list=TLalXwg9bTOmo"}"></div>
把那个json放在那里是行不通的。它必须在单引号中。它必须看起来像这样:
<div class="vidinfo-inline" data-video-srcs='{"video1":"http://www.youtube.com/watch?v=KdxEAt91D7k&list=TLhaPoOja-0f4","video2":"http://www.youtube.com/watch?v=dVlaZfLlWQc&list=TLalXwg9bTOmo"}'></div>
稍后我会做这样的事情:
var video_srcs = $('.vidinfo-inline').data('video-srcs');
除非 json 在单引号中,否则这将不起作用。
有没有人有任何想法?
编辑:
根据jquery:http ://api.jquery.com/data/#data-html5
当数据属性是对象(以'{'开头)或数组(以'['开头)时,则使用jQuery.parseJSON来解析字符串;它必须遵循有效的 JSON 语法,包括引用的属性名称。如果该值不可解析为 JavaScript 值,则将其保留为字符串。
因此我无法逃避双引号,它必须在单引号内。我有一个解决方法,除非其他人有更好的答案,否则我会将其发布为答案。