如何在jQuery中设置数据属性而不添加值?我想要这个:
<body data-body>
我试着:
$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything
其他的似乎都是将第二个参数作为字符串添加。是否可以只设置一个属性而不设置值?
如何在jQuery中设置数据属性而不添加值?我想要这个:
<body data-body>
我试着:
$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything
其他的似乎都是将第二个参数作为字符串添加。是否可以只设置一个属性而不设置值?
当前回答
简单地尝试一下,它一定会工作....
document.querySelector(“audio”).setAttribute(“autoplay”, “”);
这将显示如下代码;-
<audio autoplay>
</audio>
如果你这样写,
“音频”(美元)。attr(“autoplay”、“”);
然后,这将显示如下代码;-
<audio autoplay="autoplay">
</audio>
其他回答
我们这里有很多很好的答案。
但是,你必须看到,在Firefox中它给你data-body=""而在Chrome中它只给你data-body。
接受的答案不再创建只有名称的属性(截至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
简单地尝试一下,它一定会工作....
document.querySelector(“audio”).setAttribute(“autoplay”, “”);
这将显示如下代码;-
<audio autoplay>
</audio>
如果你这样写,
“音频”(美元)。attr(“autoplay”、“”);
然后,这将显示如下代码;-
<audio autoplay="autoplay">
</audio>
也许试试:
var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");