2012-10-31 10 views
133

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

<body data-body> 

私が試した:他の

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

すべてが文字列のように、第2引数を追加しているようです。価値のない属性を設定することは可能ですか?

+3

なぜ 'data-body'と' data-body = "" 'が必要ですか? –

+0

少なくとも、XHTMLを使用する場合は、[属性の最小化](http://www.w3.org/TR/xhtml1/#h-4.5)が許可されていないため、XHTMLを使用しないでください。 – Matthias

+4

XHTMLは使用しません.HTML5を使用します。 – David

答えて

188

attr()機能もセッター機能です。それに空の文字列を渡すことができます。

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

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

<body data-body> 

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

のattr(attributeNameに、値)

+20

+1ですが、OPはそれがセッターであることを知っています。空の文字列を渡すが 'null 'はしないという事実はやや驚くべきことです。 – Jon

+2

[Javasctiptには奇妙な振る舞いがあります](http://www.youtube.com/watch?v=kXEgk1Hdze0) 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」ではなく「value = 'true'」を選択肢のオプションに追加しているようです。ああ。 – RonLugge

関連する問題