質問
data()
オブジェクトをループすることは可能ですか?
これは私のコードであると仮定します:
$('#mydiv').data('bar','lorem');
$('#mydiv').data('foo','ipsum');
$('#mydiv').data('cam','dolores');
どのようにこのを通じてIループしていますか? each()
このために使用することができますか?
解決
jQueryの格納jQuery.cache内部変数のすべてのデータ情報。この単純だが役に立つプラグインを使用して特定のオブジェクトに関連付けられたすべてのデータを取得することが可能である。
jQuery.fn.allData = function() {
var intID = jQuery.data(this.get(0));
return(jQuery.cache[intID]);
};
代わりにこれで、あなたがこれを行うことができます。
$('#myelement').data('test1','yay1')
.data('test2','yay2')
.data('test3','yay3');
$.each($('#myelement').allData(), function(key, value) {
alert(key + "=" + value);
});
あなただけのマットBの提案を使用することができますが、これはあなたが今持っているものでそれを行う方法です。
他のヒント
$.each($.data(this), function(i, e) {
alert('name='+ i + ' value=' +e);
});
このは「この」要素のデータオブジェクトの各プロパティを反復処理されます。
jQueryの1.4と、次の作品user292614 @からヒントをテスト済み
$('#mydiv').data('bar','lorem');
$('#mydiv').data('foo','ipsum');
$('#mydiv').data('cam','dolores');
$.each( $('#mydiv').data(),function(i, e) {
alert('name='+ i + ' value=' +e);
});
私はあなたにdata()
機能が追加されているデータの「鍵」のすべてを与える任意の関数があることを考えていないが、その代わりに、なぜオブジェクトの下に関数にすべてのデータを入れていません/マッピングする?
このような何かます:
var container = new Object();
container.bar = "lorem";
container.foo = "ipsum";
container.cam = "dolores";
$("mydiv").data("container", container);
とは、データを読みたいときに/それを反復ます:
var blah = $("mydiv").data("container");
for(key in blah) {
var value = blah[key];
//do whatever you want with the data, such as:
console.log("The value of ", key, " is ", value);
}
私はこれを試してみましたが、いくつかの余分なデータ値を必要としていました。あなたも、この「問題」を得た場合は、以下の作業をする必要があります。
$('#mydiv').data('bar', {name:'lorem', id:'156', price:'199'});
そして、あなたは、単に値idを拡張することができます。
$.each( $('#mydiv').data(),function(i, e) {
alert('name='+ i + ' name=' +e.name + ' id='e.id + ' price=' + e.price );
});
我々は.DATAを使用する場合()は、マッチした要素に関連付けられた任意のデータを保存したり、マッチした要素のセットの最初の要素の指定されたデータ・ストアに値を返す意味する。
と、ループ内の.DATAは()ので、我々はループの中でそれを同じようにアクセスしなければならない場合のためにそう例えば(下)
<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>
私のループとdata-today
内のHTMLは、すべてのタグでも同じですが、その値はとても基本的にはループがhtml
生成されるので、我々は、例えばのためjs/jQuery
で同様のすなわちループにアクセスする必要が異なっています(below jQuery code)
$('.weekday').each(function(){
$(this).data('today');
});
OutPut :
Monday
Tuesday
Wednesday
Thursday
注:ブラウザのコンソールでは、それが特定の<DIV>
を返す。