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
,或在回答时以粗体显示的部分描述?