从jQuery选择器中删除结果

时间:2013-09-14 14:22:05

标签: jquery object selector

我正在尝试从jquery对象中删除一个值。 不幸的是我的解决方案不起作用。

为什么不起作用?什么是实现这一目标的最佳方式。

$elems = $('.a');
html = 'lenght ='+$elems.length+'<br><br>';

var target = $elems[3];

//Why doesn't this work?
delete $elems[target];

html += 'lenght after delete ='+$elems.length;

$('body').append(html);

这是jsfiddle

3 个答案:

答案 0 :(得分:2)

使用

$elems.eq(3).remove();

请参阅:http://api.jquery.com/remove/

答案 1 :(得分:2)

如果要从集合中删除元素,请使用splice()(就像常规数组一样)。

$elems.splice(3,1);

为什么你的代码不起作用:

  1. 您尝试从数组中删除不存在的索引

    var target = $elems[3]; 
    delete $elems[target]; //the index should be "3" and not "target"
    
  2. 从jQuery对象中取消设置属性(例如属性“3”)不会神奇地更新另一个属性(属性“length”)。
    jQuery对象(如果您愿意,可以是集合)不是数组。它们只是类似于数组的对象,因为它们实现了一些功能。

  3. 如果您想根据内容从集合中删除项目,可能需要filter()

    $elems = $elems.filter(function() {
        return $(this).html().indexOf('3') == -1;
    });
    

    上面的代码段会保留集合中不包含html字符串“3”的所有项目。

答案 2 :(得分:0)

使用以下内容。

$elems.eq(3).remove();

alert($elems.length);