我有一个jQuery对象,它是通过jQuery .find()
创建的,如下所示。
var $mytable= $('#mytable');
var $myObject = $mytable.find("tbody tr");
这很好,并为jQuery中的所有tr
元素创建了一个tbody
对象。但是,当我遍历数据时,我需要能够删除对象的一部分。例如,如果上面的调用返回一个长度为10的jQuery对象,名为$myObject
,并且我想删除索引10,我认为我可以只执行$myObject.splice(10,1)
,它会删除索引10处的元素,但是这似乎不起作用。
知道为什么吗?谢谢!
更新
基本上,我只想在循环数据时从$myObject中删除任何元素。我知道这是基于零的(上面我猜是个坏例子),只是想让我明白我的观点。
更新
好的,我使用表上的find方法创建对象,在创建时它的长度是24。当我在对象上循环时,当我碰到一个不想要的元素时,我尝试使用Array.prototype.splice.call($rows,x,1),其中x表示要删除的索引。之后,当我在控制台中查看对象时,它的长度仍然是24。
发布于 2013-12-17 21:28:19
splice
不是jQuery API的一部分,但是您可以通过应用原型在jQuery集合上应用本机数组方法:
Array.prototype.splice.call($myObject, 9, 1); // 0-index
还可以使用pop删除最后一项:
Array.prototype.pop.call($myObject);
这也会给您提供一个正确的length
属性。
发布于 2013-12-17 21:23:48
使用.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/
发布于 2013-12-17 21:24:00
splice
是数组方法,而不是jQuery对象方法。
试试slice
https://stackoverflow.com/questions/20644937
复制相似问题