jQuery .data()从存储的数组中删除项目

时间:2012-04-26 08:39:49

标签: javascript jquery ajax

我在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()返回true) 我现在正尝试使用函数.not()删除元素...

3 个答案:

答案 0 :(得分:3)

由于原始对象是一个数组,实际存储的只是对原始数据的引用,因此您所做的任何修改都会反映在对该数组的每个引用中,包括存储在{ {1}}。

所以你可以从数组中删除元素:

.data()

或者如果您想要更灵活地删除哪些元素,请使用$('#datastorage').data("testname").shift();

.splice()

或者如果您仍然可以访问$('#datastorage').data("testname").splice(0, 1);

myArray

没有必要将数组放回myArray.shift(); - 以上任何一项都会修改.data()以及myArray中已有的内容 - 他们是相同的阵列!

如果数据是对象,则同样适用,但如果它是基本类型则不适用。

答案 1 :(得分:0)

你必须把阵列拿出来,从中移除,然后把它放回去。

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

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

$('#datastorage').data('testname', a);

答案 2 :(得分: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/