javascript - 如何在包含必须使用双引号的 JSON 字符串的数据设置值周围添加单引号?
问题描述
我有以下创建元素的代码,我什至可以添加更多属性、类、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
推荐阅读
- kotlin - 当我尝试检索数据并成功登录后,我最终收到 401 错误,并且错误消息始终是请重新登录
- javascript - 在 JS/HTML 中注入和使用来自游戏刻度的中继数据
- typescript - 无法阅读 Typescript Build 上的枚举定义
- python-3.x - Python 3 串行,读取字符时出现问题
- selenium-webdriver - Selenium + Geckodriver + firefox 测试抛出各种错误
- windows - Windows 无法识别 Qt 维护工具开始菜单快捷方式
- java - 无法使用休眠将删除级联到子实体
- python - 比较对象列表和字典列表
- java - Spring:无法推断 ResponseEntity<> 的类型参数
- java - 尝试在 adobe aem 中使用 HTL 和 java 从资产元数据中获取 dc:title 和 dc:descrption