25

data()オブジェクトをループすることは可能ですか?

これが私のコードだとします:

$('#mydiv').data('bar','lorem');  
$('#mydiv').data('foo','ipsum');  
$('#mydiv').data('cam','dolores');

これをループするにはどうすればよいですか?これに使用できeach()ますか?

4

6 に答える 6

22
$.each($.data(this), function(i, e) {
   alert('name='+ i + ' value=' +e);
});

これは、「この」要素のデータ オブジェクトの各プロパティを反復処理します。

于 2010-06-01T20:09:20.217 に答える
15

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の提案を使うことができますが、これはあなたが今持っているものでそれを行う方法です.

于 2009-04-21T13:49:33.273 に答える
10

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);
});
于 2010-06-24T13:07:33.733 に答える
9

関数で追加されたデータのすべての「キー」を提供する関数はないと思いますが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);
}
于 2009-04-21T13:42:54.020 に答える
0

これを試してみましたが、追加のデータ値が必要でした。この「問題」も発生した場合は、次のように動作するはずです。

$('#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 );
});
于 2010-11-16T09:56:34.450 に答える