2012-03-29 10 views
0

html5データ属性を定義して新しい要素を作成しますが、DOMには表示されません(.addClassとは異なります)。これは意図された動作ですか?DOMで定義されたhtml5データ属性を持つ新しい要素を作成する

これは要素なしdata-foo attributs作成します。私は、コンストラクタで

-> $("<div data-foo='bar'>foo</div>").addClass('class') 
=> <div class="class" data-foo="bar">foo</div> 

をそれを宣言しなければならなかった

-> $("<div>foo</div>").data('foo', 'bar').addClass('class') 
=> <div class="class">foo</div> 

は.dataのメソッドの仕事は同じことを行うべきではないのですか?ここから

+0

を使用し、 '.data'はそれだけでそれらを読み込み、データの属性を設定または変更しません。 –

答えて

1

4。 jQueryデータAPIは、HTML5のdata- *属性を変更することはありません。

大部分の.data()および.removeData()の使用は、元の のデータをメモリ内のDOM要素に関連付けるためのものです。データが変更されるたびにDOM の属性を更新すると、理由がないため遅くなる 正当な理由また、ファンクションやその他のDOM要素への参照 、カスタムJavaScriptオブジェクトなど、DOM要素にアタッチされている可能性のあるすべてのデータ型 もシリアル化することはできません。

ルール:HTML5 data- *属性を更新または削除するには、jQueryの .attr()または.removeAttr()メソッドを使用します。

ので、IIRC通常attr ...

+0

これは単なるjQueryのことではありません。 'element.data = [something]'を実行すると、そのデータはメモリに関連付けられますが、インライン属性としてDOMに反映されることはありません。 jQの.attr()の代わりに 'element.setAttribute()'を使わなければなりません。 – JKing

+0

優秀な...私はそれがjqueryドキュメントにあったと思います。ありがとう! – brewster

+0

クールで、喜んで助けてください! –

関連する問題