繁体   English   中英

设置没有值的属性

[英]Set attribute without value

如何设置数据属性而不在 jQuery 中添加值? 我要这个:

<body data-body>

我试过了:

$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything

其他一切似乎都将第二个 arguments 添加为字符串。 是否可以只设置没有值的属性?

attr()函数也是一个 setter 函数。 你可以只传递一个空字符串。

$('body').attr('data-body','');

空字符串将简单地创建没有值的属性。

<body data-body>

参考 - http://api.jquery.com/attr/#attr-attributeName-value

attr( 属性名称 , 值 )

也许尝试:

var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");

接受的答案不再创建仅名称属性(截至 2017 年 9 月)。

您应该使用 JQuery prop()方法来创建仅名称属性。

$(body).prop('data-body', true)

你可以不用 jQuery 就可以做到!

例子:

 document.querySelector('button').setAttribute('disabled', '');
 <button>My disabled button!</button>

要设置布尔属性的值,例如禁用,您可以指定任何值。 空字符串或属性名称是推荐值。 重要的是,如果该属性完全存在,无论其实际值如何,其值都被认为是真实的。 缺少该属性意味着其值为 false。 通过将 disabled 属性的值设置为空字符串 (""),我们将 disabled 设置为 true,这会导致按钮被禁用。

来自MDN Element.setAttribute()

不确定这是否真的有益,或者为什么我更喜欢这种风格,但我所做的(在 vanilla js 中)是:

document.querySelector('#selector').toggleAttribute('data-something');

这将在没有值的情况下以全部小写形式添加该属性,或者如果该属性已存在于元素中,则将其删除。

https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute

简单地试试这个,它肯定会工作......

document.querySelector("audio").setAttribute("autoplay", "");

这将显示如下代码;-

<audio autoplay>

</audio>

如果你这样写

$("audio").attr("autoplay", "");

然后,这将显示如下代码;-

<audio autoplay="autoplay">

</audio>

我们在这里有很多很好的答案。

但是,你必须看到在 Firefox 里面它给你data-body=""在 Chrome 里面它只给你data-body

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM