设置不带值的属性

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

<body data-body>

我试着:

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

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

146956 次浏览

attr()函数也是一个setter函数。你可以直接给它传一个空字符串。

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

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

<body data-body>

引用- http://api.jquery.com/attr/#attr-attributeName-value

attr(attributeName, value)

也许试试:

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

公认的答案不是不再创建名称属性(截至2017年9月)。

你应该使用JQuery 支持()方法来创建只有名字的属性。

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

不用jQuery也能做到!

例子:

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

若要设置布尔属性的值,例如禁用,您可以指定任何值。建议使用空字符串或属性名。重要的是,如果属性存在,不管它的实际值是多少,它的值都被认为是真值。该属性的缺失意味着它的值为false。通过将disabled属性的值设置为空字符串(""),我们将disabled设置为true,这将导致按钮被禁用。

MDN Element.setAttribute ()

不确定这是否真的有益,或者为什么我喜欢这种风格,但我所做的(在香草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>

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

但是,你必须看到在火狐会给你data-body="",而在Chrome只给你data-body