2

data()配列であるjqueryオブジェクトにオブジェクトをプッシュするにはどうすればよいですか。numbers特定のクラスのHTMLをループして取得した、オブジェクトの配列を含むdataプロパティを作成したいと思います。各オブジェクトを配列にプッシュする方法がわかりません。

私の最初の質問は、オブジェクトにデータがある場合、オブジェクト全体をどのように見ることができるかということです。昔は私にできることだったようです

$('#div1').data('values', {'one' : 'UNO', 'two' : 'DUE'}); console.log($('#div1').data('values'))

そしてChromeは私に見るための少し拡張可能なオブジェクトを与えるでしょう。今、私は[object Object]私がそうするならば私がまだそれらを見ることができるのを見るだけです

console.log($('#div1').data('values').one)

しかし、オブジェクトに何が含まれているのか正確にわからない場合は、もう少し不便に思えdata()ます。私がこれを達成するのにどれだけ近いかを確認するのに役立ちます。

すべてのデータをそれぞれのオブジェクトに割り当てたら、

$(document).ready(function(){
  $('#div1').data('values', {'one' : 'UNO', 'two' : 'DUE'});
  $('#div2').data('values', {'three' : 'TRE', 'four' : 'QUATTRO'});
  $('#div3').data('values', {'five' : 'CINQUE', 'six' : 'SEI'});
  $('#div4').data('values', {'seven' : 'SETTE', 'eight' : 'OTTO'});
}); 

これらのオブジェクト(すべて共有クラスを使用add)をループして、それらに含まれるオブジェクトdata.valuesを別のdata()オブジェクトに配置するにはどうすればよいですか?bodyここでは、のデータオブジェクトでそれを実行しようとしていnumbersます。

  `$('body').data('numbers', []);`

となることによって

$('body').data('numbers') =

['div1': {
    'one': 'UNO',
    'two': 'DUE'
},
'div2': {
    'three': 'TRE',
    'four': 'QUATTRO'
},
'div3': {
    'five': 'CINQUE',
    'six': 'SEI'
},
'div4': {
    'seven': 'SETTE',
    'eight': 'OTTO'
}]

私の試みは失敗しました:

    $('.add').each(function (index, element) {
        $('body').data(numbers, {
            element.attr('id'): element.data('values')
        //could not understand how to use push here, though it seems likely that's the answer
     });

jsbin

4

1 に答える 1

4

JavaScriptには連想配列がないため、オブジェクトを使用する必要があります。次に、プロパティ(キー)名に角かっこ表記を使用します。

var values = {};
$('.add').each(function (index, element) {
    values[element.id] = $(element).data('values');
});
$('body').data('numbers', values);

jsBin

あなたについて[object Object]は、コンソールに出力する前にオブジェクトと誤って文字列連結を行っている可能性があります。そうでない場合は、Chromeコンソールのバグです。

配列を使用する.pushと、アイテムを配列の最後にプッシュするために使用できます。

var values = [];
$('.add').each(function (index, element) {
    values.push( $(element).data('values') );
});

置き場

配列を初期化して要素内に格納した.data()後、配列オブジェクトへの参照を取得して呼び出すだけで、後でアイテムを配列にプッシュできます.push()

var values = [];
$('.add').each(function (index, element) {
    values.push( $(element).data('values') );
});
$('body').data('numbers', values);

$('body').data('numbers').push({'nueve': 'nine'});
//logs "nueve" too as Array/Objects/Functions are passed by reference and the
//previous command pushed an item into the Array object referenced ("stored")
//in the $('body').data('numbers')
console.log( $('body').data('numbers') );

置き場

于 2013-02-06T16:41:54.213 に答える