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”中删除一项(myArray[0])并保留其余的。

以下不起作用:

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

我相信 jQuery 以普通对象的形式存储了数组(测试结果为$.isPlainObject()真)我现在正在尝试使用该函数.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 回答