如何在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
其他的似乎都是将第二个参数作为字符串添加。是否可以只设置一个属性而不设置值?
当前回答
不用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)
简单地尝试一下,它一定会工作....
document.querySelector(“audio”).setAttribute(“autoplay”, “”);
这将显示如下代码;-
<audio autoplay>
</audio>
如果你这样写,
“音频”(美元)。attr(“autoplay”、“”);
然后,这将显示如下代码;-
<audio autoplay="autoplay">
</audio>
也许试试:
var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");
我们这里有很多很好的答案。
但是,你必须看到,在Firefox中它给你data-body=""而在Chrome中它只给你data-body。
不确定这是否真的有益,或者为什么我喜欢这种风格,但我所做的(在香草js中)是:
document.querySelector('#selector').toggleAttribute('data-something');
这将添加全小写且不带值的属性,或者删除元素上已经存在的属性。
https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute