2012-10-31 205 views
133

如何設置數據屬性而不在jQuery中添加值?我想這一點:設置無值的屬性

<body data-body> 

我想:

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

一切似乎來的第二個參數添加爲一個字符串。有沒有可能只設置一個沒有價值的屬性?

+3

爲什麼你需要'data-body'與'data-body =「」'? –

+0

至少如果你想使用XHTML,你不應該那樣做,因爲[屬性最小化](http://www.w3.org/TR/xhtml1/#h-4.5)是不允許的。 – Matthias

+4

我不使用XHTML,我使用HTML5 – David

回答

188

attr()函數也是一個setter函數。你可以傳給它一個空字符串。

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

一個空字符串將簡單地創建沒有值的屬性。

<body data-body> 

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

ATTR(的attributeName,value)的

+20

+1,但OP知道它是一個setter。傳遞一個空字符串而不是'null'的事實並不令人感到意外。 – Jon

+2

[Javasctipt有一些奇怪的行爲](http://www.youtube.com/watch?v=kXEgk1Hdze0)。知道這些奇怪的事情發生在哪裏將取消surprize元素:P – Lix

+23

注意:這不適用於jQuery 1.7.2(我知道這不是最新版本),但使用'$(el).prop('data-body ',true)'爲我工作,其中'$(el).attr('data-body','')'最後爲我設置了data-body =「data-body」。 –

26

也許嘗試:

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

只有這個解決方案適用於我'var btn = $(this).get(0); btn.setAttribute(「disabled」,「」);' – gkiko

+0

在解決.attr和.prop之後,就像在這裏所有其他解決方案和評論中提到的那樣,我終於發現返回(或至少 「方式「返回)原生JS,做了詭計,就像上面的評論中所建議的那樣......爲此歡呼! – TheCuBeMan

7

接受的答案並不創建一個名稱 - 只有屬性了(截至9月燼2017)。

您應該使用JQuery prop()方法創建僅限名稱的屬性。

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

謝謝你,我正在努力弄清楚爲什麼它不起作用。 – RonLugge

+0

實際上,我似乎在我的選擇選項中添加了「value ='true'」,而不是「value」。啊。 – RonLugge