我有一个jQuery对象,它是通过jQuery .find()
创建的,如下所示......
var $mytable= $('#mytable');
var $myObject = $mytable.find("tbody tr");
这非常有用,可以为tr
中的所有tbody
元素创建一个jQuery对象。但是,当我循环数据时,我需要能够随时删除对象的一部分。例如,如果上面的调用返回一个名为$myObject
的长度为10的jQuery对象,并且我想删除索引10,我想我可以做$myObject.splice(10,1)
并且它会删除元素索引10.然而,这似乎并没有起作用。
任何想法为什么?谢谢!
更新
我基本上只是希望能够在循环访问数据时从$ myObject中删除任何我想要的元素。我知道它基于零(我猜的上面的错误例子),只是试图明白我的观点。
更新
好吧,所以我使用桌面上的find方法创建对象,并且在创建时它的长度为24.当我在对象上循环时,当我击中一个元素时,我不会#39 ; t想要我尝试使用Array.prototype.splice.call($ rows,x,1),其中x表示要删除的索引。之后,当我在控制台中查看对象时,它仍然具有24的长度。
答案 0 :(得分:3)
使用.not()
删除单个元素,然后在闲暇时循环遍历jQuery对象:
var $myObject = $mytable.find('tbody tr').not(':eq(9)'); // zero-based
http://jsfiddle.net/mblase75/tLP87/
或者如果您可能删除多个:
var $myObject = $mytable.find("tbody tr:lt(9)");
答案 1 :(得分:2)
splice
不是jQuery API的一部分,但您可以通过应用原型在jQuery集合上应用本机Array方法:
Array.prototype.splice.call($myObject, 9, 1); // 0-index
您也可以使用pop删除最后一项:
Array.prototype.pop.call($myObject);
这也应该为您提供正确的length
属性。
答案 2 :(得分:1)
splice
是一个数组方法,而不是jQuery对象方法。
尝试slice
答案 3 :(得分:0)
Javascript使用从零开始的数组。这意味着数组中的最后一项(即第10项)将在索引9处。
$myObject[9]
所以你需要这样的东西:
$myObject.splice(9, 1);
这将从现有数组中删除元素,并将其返回。
答案 4 :(得分:0)
您可以使用.remove从DOM中删除元素。
因此,要删除$myObject
数组索引9处的元素,请使用:
$myObject.eq(9).remove();
如果要保留要删除的元素,还可以执行以下操作:
var removedElement = $myObject.eq(9);
removedElement.detach();
答案 5 :(得分:0)
您也可以使用过滤器:
var $myObject = $mytable.find("tbody tr").filter(':lt(9)');