0

jQueryで.data()関数を使用して、以下のように配列を格納しています。

var myArray = {};
myArray[0] = {};
myArray[0][0] = "test00";
myArray[0][1] = "test01";
myArray[1] = {};
myArray[1][0] = "test10";
myArray[1][1] = "test11";

$('#datastorage').data("testname". myArray);

「testname」から1つのアイテム(myArray [0])のみを削除し、残りを保持したいと思います。

以下は機能しません:

$('#datastorage').removeData("testname").removeData(0);

jQueryは配列をプレーンオブジェクトの形式で保存したと思います(テスト$.isPlainObject()はtrueに戻ります)私は今、関数を使用し.not()て要素を削除しようとしています...

4

3 に答える 3

3

元のオブジェクトは配列であるため、実際に保存されるのは元のデータへの参照にすぎません。したがって、行った変更は、に保存されているものを含め、その配列へのすべての.data()参照に反映されます。

したがって、配列から要素を削除するだけです。

$('#datastorage').data("testname").shift();

または、削除する要素の柔軟性を高めたい場合は、を使用します.splice()

$('#datastorage').data("testname").splice(0, 1);

または、まだアクセスできる場合myArray

myArray.shift();

配列を元に戻す必要はありません.data()-上記のいずれも、両方myArrayとすでに存在するものを変更します.data()-それらは同じ配列です!

データがオブジェクトの場合も同じですが、プリミティブ型の場合は当てはまりません。

于 2012-04-26T08:49:57.737 に答える
0

アレイを取り出して、そこから削除してから、元に戻す必要があります。

var a = $('#datastorage').data('testname');

a.splice(0,1); // remove 1 item from position 0

$('#datastorage').data('testname', a);
于 2012-04-26T08:45:57.737 に答える
0

このコードを試してください

var myArray = []; // myArray is an Array, not an object
myArray[0] = {};
myArray[0][0] = "test00";
myArray[0][1] = "test01";
myArray[1] = {};
myArray[1][0] = "test10";
myArray[1][1] = "test11";

$('#datastorage').data("testname", myArray);
console.log($('#datastorage').data("testname"));

$('#datastorage').data("testname", myArray.slice(1));
console.log($('#datastorage').data("testname"));

フィドルの例:http://jsfiddle.net/nNg68/

于 2012-04-26T08:47:10.203 に答える