2011-06-28 11 views
10

IE8でテストしています。 jQueryをv1.5.2からv1.6.1にアップグレードしましたが、データメソッドが機能していません。jQuery .data()がデータを取得していません - *

<tr class="ui-widget-content alt" nodeIndex="2" data-DocAttributeFieldType="TextBox" data-DocClassAttributeFieldId="60777" jQuery16106588245076914028="66"> 

この作品:

行は次のようになり

$("#docClassAttributeFields tbody tr:first").attr("data-DocClassAttributeFieldId"); 

これは動作しません:

$("#docClassAttributeFields tbody tr:first").data("DocClassAttributeFieldId"); 

は、その中にバグがありますか?

ここは例です。 1.5.2ででそれを実行し、その後、彼らは異なる動作方法を確認するには1.6 ... http://jsfiddle.net/5hbKX/

答えて

16

docsから(私は1.6で述べた変更のせいである疑いがある - あなたはケースを取り外す試してみましたが、見てlastValue例):?jQueryの1.4.3 HTML 5 data- attributes のとおり

属性データ -

HTML 5が自動的 jQueryのデータに引き込まれますオブジェクト。埋め込みダッシュ付き 属性の処理は、 W3C HTML5 specificationに準拠するようにjQuery 1.6で変更された でした。例えば

、次のHTML与えられた次のjQueryコードのすべてが 動作します

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div> 

を。

$("div").data("role") === "page"; 
$("div").data("lastValue") === 43; 
$("div").data("hidden") === true; 
$("div").data("options").name === "John"; 

すべての試みは(この はブール値、数値、オブジェクト、 アレイ、及びNULLを含む)、それ以外の場合は文字列として 残されるJavaScriptの値に 文字列を変換させます。値の 属性を文字列として取り出すには、 を変換しようとすると、attr() メソッドが使用されます。データ属性が オブジェクト( '{')または配列 ( '['で始まる)である場合、 jQuery.parseJSONは 文字列を解析するために使用されます。引用符付きのプロパティー の名前を含む有効なJSON の構文に従う必要があります。最初にdataプロパティが にアクセスした後に に引き込まれ、その後 にアクセスまたは変更されなくなりました(すべてのデータ値 がjQueryの内部に格納されます)。上記HTML5 specificationから

カスタムデータが属性、名前 始まる文字列と「データ - 」なし名前空間に 属性である 1文字以上でありハイフンの後に はXMLと互換性があり、U + 0041〜 U + 005A(LATIN大文字A〜 LATIN)の範囲には 文字は含まれていません大文字のZ)。 HTMLドキュメントのHTML要素に

すべての属性が自動的にASCII-小文字 を取得し、その ASCII大文字の制限は ような文書には影響しません。

+0

私はそれだと思います。小文字に変更すると:http://jsfiddle.net/5hbKX/1/このような悪臭は、これははるかに読みにくいです:.data( "docclassattributefieldid")対.data( "DocClassAttributeFieldId") – Homer

+0

面白いサイドノート、 Firebug(FF)とFirebug-Lite(IE)でソースを表示するとdata- *は小文字になりますが、IE Developer Toolsで表示すると大文字と小文字が混在します。 – Homer

+6

キャプション文字を使用できない場合は、代わりにハイフン/連結文字を使用します。 – Betamos

関連する問題