1

このdivコードを使用しています

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

次のような値を印刷しようとしています

 japp.init = function () {
  console.log($("div").data("role"));
  console.log($("div").data("lastValue"));
  console.log($("div").data("hidden"));
  console.log($("div").data("options").name);
});

上記の div タグを body 内に直接配置すると、これは正常に機能しますが、他の div タグ内に div タグを配置すると、機能せず、未定義と表示されます。

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

コンソールは、上記のhtmlに対して未定義を出力します。

不明な点があればお知らせください

4

6 に答える 6

3

データを取得するとき、jQuery はセレクターに一致する最初の要素からデータを返します。DOM の最初の div にデータがない場合、jquery はそれを返しません。

試す

japp.init = function () {
  console.log($("div[data-role]").data("role"));
  console.log($("div[data-lastValue]").data("lastValue"));
  console.log($("div[data-hidden]").data("hidden"));
  console.log($("div[data-options]").data("options").name);
});

または、この div に ID を指定し、$('#someid').data('role') のような ID で選択します

于 2013-07-17T14:02:30.173 に答える
3

あなたのセレクターはdiv、あなたのページにもっとdivsある場合、jQueryは(この場合)最初のものを選択します。

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

上記HTMLでは、最初の div がないdata-*ため、未定義の値になります

セレクターをより具体的にする必要があります

$('.page div').data('role')

または

$('div:first div').data('role')
于 2013-07-17T14:02:32.137 に答える
2

試す

$("div.page div").each(function(){
    console.log($(this).data("whatever_you_need"));
});

このようにして、クラス「ページ」を持つ div にネストされたすべての div を循環します。

于 2013-07-17T14:00:28.793 に答える
2

取得する div を正確に指定していません。特定の要素から特定のデータを取得しようとするときはいつでも、アクセスしている div を確認する必要があります。これは、要素の反復内で発生するか、ID または ID に関連する要素によって発生する可能性があります。複数になる可能性があるため、タグ名やクラス名に基づいて行うべきではありません。この場合、取得しようとしている div に ID を追加して、具体的にアクセスできるようにします。

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

次にアクセスします。

console.log($("#thisDiv").data("role"));

また、同じ jquery オブジェクトを何度もラップするとパフォーマンスが低下します。次のようにキャッシュできます。

$thisDiv = $("#thisDiv");
console.log($thisDiv.data("role"));
....
于 2013-07-17T14:03:03.243 に答える