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

<body data-body>

我试着:

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

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


当前回答

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

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

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

<body data-body>

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

其他回答

不用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()

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 prop()方法来创建只有名字的属性。

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

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

但是,你必须看到,在Firefox中它给你data-body=""而在Chrome中它只给你data-body。