在 $.queue 中验证 XHTML

Validating XHTML inside $.queue

提问人:Sarah 提问时间:4/16/2012 最后编辑:Paul SweatteSarah 更新时间:1/14/2014 访问量:104

问:

我正在使用以下 JavaScript:

.queue(function() {
            $('#num').html('10');
            element
                .html('First line<br /><span id="small">Small text<br />Small text again<br />small text again here</span>')
                .dequeue();
        })

当我通过 W3C 的验证器运行它时,它说“文档类型不允许此处的元素 br/span”。

有没有其他方法可以做到这一点来验证它?

谢谢!

JavaScript XHTML W3C 验证

评论

0赞 4/16/2012
您可以使用 document.createElement(...) 并添加创建的元素 (appendChild)
0赞 Sarah 4/16/2012
这有什么用吗?对不起,我是一个完全的 JS 初学者!

答:

-1赞 Paul Sweatte 9/11/2012 #1

使用代替多个 's 和 's:prespanbr

'<pre>First line
Small text
Small text again
small text again here</pre>'

以下代码适用于使用 JavaScript 控制台的 stackoverflow.com,并使用 W3C 标记检查器进行验证:

$("body").queue( function() { $(this).html("<pre>hi there</pre>") } ).dequeue();

这将最少地产生:

<!doctype html>
<html>
 <head><title></title></head>
 <body>
 <pre>hi there</pre>
 </body>   
</html>

评论

0赞 Quentin 9/11/2012
那里也不允许使用预元素。
0赞 Paul Sweatte 9/11/2012
@Quentin 在 W3C 验证器或 jQuery 中?
0赞 Quentin 9/11/2012
在元素内部。jQuery的使用是无关紧要的。验证者只是告诉你这是不允许的。<script>
0赞 Paul Sweatte 9/11/2012
@Quentin 脚本元素在哪里?
1赞 Quentin 9/11/2012
重新编辑:以下代码适用于 stackoverflow.com - 正如我在回答中解释的那样,除非使用XHTML,否则不应显示该错误报告。Stackoverflow 未使用 XHTML。
1赞 Quentin 9/11/2012 #2

除非你使用的是 XHTML,否则你不应该得到这个错误(除非你先得到其他几个错误),在这种情况下,你必须跳过“假装你的 XHTML 是 HTML”的许多障碍。

在此特定情况下,这是嵌入式样式表和脚本的准则。

简而言之,您应该将 JS 移动到外部文件或将其包装在 CDATA 标记中。

我建议改用 HTML(除非您实际上在生产链中使用 XML 工具,而大多数人没有)。