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

<body data-body>

我试着:

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

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


当前回答

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

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

这将添加全小写且不带值的属性,或者删除元素上已经存在的属性。

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

其他回答

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

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

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

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

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

这将添加全小写且不带值的属性,或者删除元素上已经存在的属性。

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

不用jQuery也能做到!

例子:

巴顿querySelector(“”)的文件。setAttribute(“残疾人”、“); <按钮>我的断开按钮!巴顿< - >

To set the value of a Boolean attribute, such as disabled, you can specify any value. An empty string or the name of the attribute are recommended values. All that matters is that if the attribute is present at all, regardless of its actual value, its value is considered to be true. The absence of the attribute means its value is false. By setting the value of the disabled attribute to the empty string (""), we are setting disabled to true, which results in the button being disabled. From MDN Element.setAttribute()

也许试试:

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

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

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

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

<body data-body>

参考资料- http://api.jquery.com/attr/#attr-attributeName-value attr(attributeName, value)