web-dev-qa-db-ja.com

値なしで属性を設定

JQueryに値を追加せずにデータ属性を設定するにはどうすればよいですか?これ欲しい:

<body data-body>

私は試した:

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

それ以外はすべて、2番目の引数を文字列として追加するようです。値なしで属性を設定することは可能ですか?

174
David Hellsing

attr()関数もセッター関数です。空の文字列を渡すことができます。

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

空の文字列は、値のない属性を作成するだけです。

<body data-body>

リファレンス- http://api.jquery.com/attr/#attr-attributeName-value

attr(attributeName、value)

223
Lix

おそらく試してみてください:

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

受け入れられた回答は、名前専用属性を作成しません(2017年9月現在)。

名前のみの属性を作成するには、JQuery prop() メソッドを使用する必要があります。

$(body).prop('data-body', true)
22
Charlie H

あなたはjQueryなしでそれを行うことができます!

例:

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

無効などのブール属性の値を設定するには、任意の値を指定できます。空の文字列または属性の名前が推奨値です。重要なのは、属性が実際に存在する場合、実際の値に関係なく、その値が真であると見なされることです。属性が存在しないということは、その値が偽であることを意味します。 disabled属性の値を空の文字列( "")に設定することにより、disabledをtrueに設定します。これにより、ボタンが無効になります。

から MDN Element.setAttribute()

2
LipESprY