从jQuery对象中删除元素

时间:2013-12-17 21:21:42

标签: javascript jquery

我有一个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的长度。

6 个答案:

答案 0 :(得分:3)

使用.not()删除单个元素,然后在闲暇时循环遍历jQuery对象:

var $myObject = $mytable.find('tbody tr').not(':eq(9)'); // zero-based

http://jsfiddle.net/mblase75/tLP87/

http://api.jquery.com/not/


或者如果您可能删除多个:

var $myObject = $mytable.find("tbody tr:lt(9)");

http://jsfiddle.net/mblase75/9evT8/

http://api.jquery.com/lt-selector/

答案 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)');