玉石:没有值的元素属性

12

我刚开始使用Jade——到目前为止,感觉非常棒。

但是我需要一个带有'itemscope'属性的元素:

<header itemscope itemtype="http://schema.org/WPHeader">

我的Jade符号表示是:

header(itemscope, itemtype='http://schema.org/WPHeader')

但是结果是:

<header itemscope="itemscope" itemtype="http://schema.org/WPHeader">

我该如何确保我得到正确的结果 -- itemscope 而不是 itemscope="itemscope"


1
itemscope="itemscope" 和 itemscope 一样有效。看起来这是Jade的默认行为。我建议你直接使用它。 - jwerre
5个回答

12
有时候它不太正常 -- 比如说对于 contentEditable,Jade 试图检测 HTML5 的文档类型然后做出 <header itemscope itemtype="http://schema.org/WPHeader"></header> 的代码。问题是,如果你在页面中插入模板,它就无法识别它是否是 HTML5。
你可以通过将选项中的 {doctype: '5'} 强制转换为 HTML5 来解决这个问题 -- 对于 require-jade 已经这么做了:https://github.com/ibash/require-jade/commit/754cba2dce7574b400f75a05172ec97465a8a5eb

5
我认为现在的语法是 {doctype: 'html'} - Jay

10

我在使用angular的ng-include指令时遇到了相同的问题。它得到了ng-include =" ng-include",然后包含文件就无法正常工作。

对我有用的方法是将一个空字符串作为值,即ng-include = ""。


1
是的,我花了一些时间尝试让Jade与Angular协同工作,但它显然不是为此而编写的。 - ditoslav

8

1
这个注释应该放在每个jade-template的顶部。之后我们就不需要给属性分配blank-string值了。doctype html和下一行div#core(ui-view controller="CoreCtrl")。请注意代码中的ui-view。谢谢@alehro。 - Aakash
没错,就是这样。 - taylorpalmer

6
我刚刚在一个 Express.js/Jade 项目中尝试了一下,得到的结果是:
<header itemscope itemtype="http://schema.org/WPHeader"></header>

我也在bash中尝试了一下,结果和你一样。
我建议你可以采用以下建议或在Github上创建一个问题。

itemscope="itemscope" 与 "itemscope" 的作用是一样的。看起来这是Jade的默认行为,我建议您直接使用它。


谢谢。奇怪的是结果不同。好的,就用这个吧。 - mvbl fst
这仍然会在谷歌搜索中显示。对我来说正确的解决方案是将属性设置为空字符串。 - Tim

1

我遇到了同样的问题,在我的情况下最简单的解决方法是在我的jade文档顶部添加doctype 5。显然,这允许Jade使用没有值的属性。 ibash的答案让我走上了正确的轨道,所以谢谢他。


2
编译器提示:doctype 5已过时,请使用html。因此,在html(lang = en)之前,我只需写入doctype html。供参考。 - ankakusu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接