Javascript 使用JQuery操作时保留没有值的属性

Javascript 使用JQuery操作时保留没有值的属性,javascript,jquery,html,Javascript,Jquery,Html,我的问题关键在于这个问题: $('<video allowfullscreen></video>').prop('outerHTML') === '<video allowfullscreen></video>' //Is False $('<video allowfullscreen></video>').prop('outerHTML') === '<video allowfullscreen=""><

我的问题关键在于这个问题:

$('<video allowfullscreen></video>').prop('outerHTML') === '<video allowfullscreen></video>' //Is False
$('<video allowfullscreen></video>').prop('outerHTML') === '<video allowfullscreen=""></video>' //Is True
$('').prop('outerHTML')==''//为False
$('').prop('outerHTML')==''//为True
我给jQuery的输入部分被破坏,并以一种不需要的方式进行转换

我的目标是,在将html转换回字符串并将其作为用户可以复制的文本传递给用户之前,添加一些属性并将其包装在其他元素中,以修改(受信任的)html。 因此,预期输出可能类似于:

<div><video class="myClass" allowfullscreen></video></div>

因为输入html来自其他地方,所以我希望尽可能少地对其进行假设。因此,理想情况下,我不希望使用字符串并对其进行解析以修复特定属性或删除“”的实例(以防在某些情况下有理由将属性专门设置为“”)

即使我不关心在这些属性上设置一个值,正确的值无论如何都是
allowfullscreen=“allowfullscreen”
。我无法控制输入的html,所以我需要保持原样。因此,我不能简单地“修复”html以传递类似
allowfullscreen=“allowfullscreen”
的内容

当我从string->jQuery->string时,是否有任何选项或方法可以保留无价值的属性

我甚至愿意接受其他更适合这种DOM操作的技术建议,但jQuery的语法非常简洁,因此在其他方面是理想的。香草Javascript可以很好地完成这项工作,但语法使代码更加脆弱,我希望避免这种情况。

参见

8.1.2.3属性

元素的属性在元素的开始部分表示 标签

属性有名称和值。属性名称必须由 除空格字符以外的一个或多个字符,U+0000 NULL, U+0022引号(“),U+0027撇号('),“>”(U+003E),“/” (U+002F)和“=”(U+003D)字符、控制字符和任何 非Unicode定义的字符。在HTML语法中, 属性名,即使是外来元素的属性名,也可以用 ASCII的大写字母和小写字母的任意组合 属性名称不区分大小写的匹配

属性值是文本和字符引用的混合体, 除了文本不能包含 模棱两可的符号

可以通过四种不同的方式指定属性:

空属性语法

只有属性名。该值隐式为空字符串。


“我给jQuery的输入部分被破坏,并以一种不必要的方式进行了转换。”不确定问题是否与
jQuery
相关,但
DOCTYPE
名称空间
html5
相关?这里的问题是,代码被那些不太懂技术的人使用,他们可能不知道allowfullscreen=”“允许全屏显示。我们希望避免这样的问题:人们可能会自己摆弄html,然后尝试allowfullscreen=“false”之类的方法。此外,它对用户来说看起来更干净。“这里的问题是,代码会发送给技术水平较低的人,他们可能不知道allowfullscreen=”“允许全屏显示。”包括
注释
html
,或在回答时以粗体显示的部分描述?