233

如何在不添加 jQuery 值的情况下设置数据属性?我要这个:

<body data-body>

我试过:

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

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

4

6 回答 6

280

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

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

空字符串只会创建没有值的属性。

<body data-body>

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

attr( 属性名 , 值 )

于 2012-10-31T13:37:00.043 回答
58

也许尝试:

var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");
于 2012-10-31T13:37:58.327 回答
26

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

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

$(body).prop('data-body', true)
于 2017-09-06T09:53:59.387 回答
15

不用 jQuery 你也可以做到!

例子:

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

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

来自MDN Element.setAttribute()

于 2019-03-24T06:10:56.683 回答
9

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

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

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

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

于 2020-03-05T04:29:00.537 回答
3

试试这个,它肯定会工作....

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

这将显示如下代码;-

<audio autoplay>

</audio>

如果你像这样写,

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

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

<audio autoplay="autoplay">

</audio>
于 2021-06-01T06:49:26.893 回答