1

我正在尝试从 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

4

3 回答 3

3

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

$elems.splice(3,1);

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

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

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

如果您想根据内容从集合中删除项目,您可能想要filter()它们。

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

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

于 2013-09-14T14:28:08.740 回答
2

采用

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

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

于 2013-09-14T14:24:25.677 回答
0

使用以下内容。

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

alert($elems.length);
于 2013-09-14T14:31:34.073 回答