设置没有值的属性

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

<body data-body> 

我试过了:

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

其他一切似乎都把第二个参数作为一个string来添加。 是否可以设置一个没有价值的属性?

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

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

一个空string将简单地创build没有值的属性。

 <body data-body> 

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

attr(attributeName,value)

也许试试:

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

接受的答案不再创build名称唯一属性(截至2017年9月)。

您应该使用JQuery prop()方法来创build名称唯一的属性。

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

截至2017年6月15日我不相信这是正确的。

我把一个小提琴,将演示,目前(使用jQuery的边缘拉[jQuery的JavaScript库v3.2.2 – pre 5bdd1ca1ab6469c5ec9ed7ba8b669b4cacc281d9])没有performance出上述行为。

相反,如果value参数没有值,则将该属性名称作为值。

(后面的故事)我试图添加一个parsley所需的属性到一个字段,如果相应的checkbox被选中。 而不是看到“required =”“'的属性,我看到'required =”required“'。

这是链接到那个小提琴。 https://jsfiddle.net/Jevolz/25whtL83/ (更新小提琴:certificate更多的空string的可能性: https : //jsfiddle.net/Jevolz/25whtL83/7/ )

HTML:

 <input type="checkbox" id="demoCb" /> <input type="text" id="demoTxt" value="Inspect Me!"/> 

使用Javascript:

 $(function(){ $('#demoCb').on('click', cbChanged); }); function cbChanged(e){ var elem = $(e.target); var checked = $(elem).is(':checked'); if(checked){ $('#demoTxt').attr('required', ''); } else{ $('#demoTxt').attr('required', null); } } 

我会更新这个post,如果我发现这个变化。

*注意7/17/2017:我已经看到一些浏览器开发工具中的片状行为。 我可以在控制台中正确拖动的variables在“检查元素”中没有正确反映。 这可以解释我的观察。 如果你同意,让我知道,我会看到关于这个post的方式。

谢谢