设置没有值的属性

时间:2012-10-31 13:32:15

标签: javascript jquery attributes attr

如何在不添加jQuery值的情况下设置数据属性?我想要这个:

<body data-body>

我试过了:

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

其他所有东西似乎都将第二个参数添加为字符串。是否可以只设置一个没有值的属性?

6 个答案:

答案 0 :(得分:222)

attr()函数也是一个setter函数。你可以传递一个空字符串。

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

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

<body data-body>
  

参考 - http://api.jquery.com/attr/#attr-attributeName-value

     

attr(attributeName,value)

答案 1 :(得分:40)

也许试试:

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

答案 2 :(得分:21)

接受的答案不再再创建仅限姓名的属性(截至2017年9月)。

您应该使用JQuery prop()方法创建仅限名称的属性。

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

答案 3 :(得分:4)

不确定这是否真的有用,还是不确定为什么我喜欢这种样式,但是我所做的(在香草js中)是:

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

这将以小写形式添加没有值的属性,或者如果元素上已经存在则将其删除。

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

答案 4 :(得分:2)

您可以不使用jQuery!

示例:

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

  

要设置布尔属性的值(例如禁用),可以指定任何值。建议使用空字符串或属性名称。重要的是,如果根本不存在该属性,则不管其实际值如何,都将其值视为真实。该属性的缺失表示其值是false。通过将disabled属性的值设置为空字符串(“”),我们将disable设置为true,这将导致按钮被禁用。

     

来自MDN Element.setAttribute()

答案 5 :(得分:2)

简单地试试这个,它肯定会工作......

document.querySelector("audio").setAttribute("autoplay", "");

这将显示如下代码;-

<audio autoplay>

</audio>

如果你喜欢,

$("audio").attr("autoplay", "");

然后,这将显示如下代码;-

<audio autoplay="autoplay">

</audio>