HTML中是否有自定义布尔属性之类的东西?

HTML中是否有自定义布尔属性之类的东西?,html,custom-data-attribute,Html,Custom Data Attribute,在HTML5中,我们可以使用自定义。然而,据我所知,考虑到它们是属性,我希望它们需要一个字符串值。HTML中是否有允许自定义属性的替代方法,即布尔值属性,如选中的,必需的,隐藏的等 假设我有一个学校的网站。也就是说,如果用户是教师,我希望页面上的某些元素与用户交互,但如果他们是学生,则不希望。在JavaScript中,最好将事件附加到某个元素,该元素具有属性教师可以交互或类似属性。显然,我知道我可以使用类或数据属性,但类在语义上看起来并不漂亮,而且在我看来,具有yes值的数据属性是荒谬的——这就

在HTML5中,我们可以使用自定义。然而,据我所知,考虑到它们是属性,我希望它们需要一个字符串值。HTML中是否有允许自定义属性的替代方法,即布尔值属性,如
选中的
必需的
隐藏的

假设我有一个学校的网站。也就是说,如果用户是教师,我希望页面上的某些元素与用户交互,但如果他们是学生,则不希望。在JavaScript中,最好将事件附加到某个元素,该元素具有属性
教师可以交互
或类似属性。显然,我知道我可以使用类或数据属性,但类在语义上看起来并不漂亮,而且在我看来,具有
yes
值的数据属性是荒谬的——这就是属性的用途

那么,是否有任何方法或计划来支持自定义属性?(不是属性。)

编辑:按属性我指的是自版本1.6(.1)以来jQuery中的区别,其中属性主要是布尔属性。我希望下面的代码返回true,但它返回一个空字符串

console.log($(“div”).prop(“数据侵入”);
log($(“div”).attr(“数据侵入”)

在实践中,您可以使用任何您想要的自定义属性,它将起作用:

console.log(document.querySelector('div').getAttribute('foo'))

mydiv
您可以使用
element.hasAttribute(“name”)使用普通javascript来实现这一点

检查此fidddle:

对于DOM属性,如选中、选中、禁用或隐藏,您将获得布尔值

$("div").attr("data-intrusive");
.attr()将获取属性值,而不是布尔值。 .attr()将尝试获取data intrusive的值,如果在DOM中观察到data intrusive的值,则该值为空字符串

<div data-intrusive="">1</div>
代码笔-

当我明确表示我知道数据属性时,我不完全确定为什么要将它们引入到这个项目中,但这不是我想要的。我说的是定制属性。看一看。如您所见,
hidden
返回true。我希望自定义属性也能返回true,而不需要求助于语义可疑的
x=yes
。当你请求帮助,有人试图提供帮助,并告诉你你想要的是由某个存在的东西来处理时,不需要采取态度。特殊的全局属性在不同的浏览器中会有不同的行为-一些可能会给你一个布尔值,一些可能会给你一个字符串,并且无法预测哪个会做什么。W3没有像对待其他属性那样定义如何处理它们,比如
id
:正如我在回答中所说的,没有计划支持自定义属性。我想你误解了我的评论。我真的想问你为什么要提到数据属性,因为它让人困惑,因为我在我的专栏文章中说我知道它们。也许我应该重新表述我的问题:有没有一种方法可以使用自定义布尔属性而不将值定义为字符串true。因此,我希望返回true,而它返回一个空字符串。这在HTML中可能有效,但在SVG中无法解析-文档无法打开。您必须设置一个值。我使用像“1”或“Y”这样的单个字符表示是。(我不是落选者…)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-intrusive style="color:red" hidden>1</div>
console.log($("div")[0].outerHTML) //output- <div data-intrusive="" style="color:red" hidden="">1</div>

console.log($("div").prop('style'));// output-CSSStyleDeclaration {0: "color", alignContent: "", alignItems: "", alignSelf: "", alignmentBaseline: "", all: ""…}
console.log($("div").attr('style'));//output- color:red


console.log($("div").prop('hidden'));//true
console.log($("div").attr('hidden'));//hidden

console.log($("div").attr('data-intrusive'));//empty string as expected
console.log($("div").prop('data-intrusive'));//undefined as expected, as there is no property value
//if it is a string value
console.log($("div")[0].hasAttribute('data-intrusive'));

//if it is boolean ,then it is return the same
$("div").prop('data-intrusive','fasle');
console.log($("div").prop('data-intrusive'));