设置没有值的属性
如何设置一个数据属性,而不在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的方式。
谢谢