[英]How to add single quotes around the data-setup value that contains a JSON string that must use double quotes?
我有以下创建元素的代码,我什至可以添加更多属性、类、id 等
if(is_video){
Mcontent = $(document.createElement("video"))
Msource = $(document.createElement("source"))
Msource.attr("src",url)
Msource.attr("type","video/"+formato)
Mcontent.attr("class","video-js vjs-default-skin")
Mcontent.append(Msource)
}
使用以下代码,我将属性添加到特定标签:
var json = {"aspectRatio":"640:267", "playbackRates": [1, 1.5, 2]}; const content = $('video').addClass('video-js vjs-default-skin') content.attr('data-setup', JSON.stringify(json));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <video></video>
当我使用浏览器的开发人员工具检查代码时,这给了我以下结果:
<video class="video-js vjs-default-skin" data-setup="{"aspectRatio":"640:267","playbackRates":[1,1.5,2]}">
</video>
我需要属性data-setup=''
this 用单引号而不是双引号data-setup=""
,我怎样才能得到这个结果:
<video class="video-js" data-setup='{"aspectRatio":"640:267","playbackRates":[1,1.5,2]}'>
</video>
请注意官方文档 videoJS 的注释。 其中警告:注意:您必须在 data-setup 的值周围使用单引号,因为它包含必须使用双引号的 JSON 字符串。
你不需要用单引号污染你的 HTML。 JavaScript 将为您正确编码属性值....
const Mcontent = $('video').addClass('video-js vjs-default-skin') Mcontent.attr('data-setup', JSON.stringify({ aspectRatio: "640:267", playbackRates: [1, 1.5, 2] })) // this is what the generated HTML will look like $('pre').text($('section').html()) // decode example, just showing that it's possible console.info(JSON.parse($('video').attr('data-setup')))
section { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <section> <video></video> </section> <pre></pre>
HTML 编码的值,即
<video data-setup="{"aspectRatio":"640:267","playbackRates":[1,1.5,2]}">
将作为 JSON 完全可读(假设这是用于的)。
下面是生成的标记示例~ JSFiddle demo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.