我正在尝试从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
答案 0 :(得分:2)
答案 1 :(得分:2)
如果要从集合中删除元素,请使用splice()
(就像常规数组一样)。
$elems.splice(3,1);
为什么你的代码不起作用:
您尝试从数组中删除不存在的索引
var target = $elems[3];
delete $elems[target]; //the index should be "3" and not "target"
从jQuery对象中取消设置属性(例如属性“3”)不会神奇地更新另一个属性(属性“length”)。
jQuery对象(如果您愿意,可以是集合)不是数组。它们只是类似于数组的对象,因为它们实现了一些功能。
如果您想根据内容从集合中删除项目,可能需要filter()
。
$elems = $elems.filter(function() {
return $(this).html().indexOf('3') == -1;
});
上面的代码段会保留集合中不包含html字符串“3”的所有项目。
答案 2 :(得分:0)
使用以下内容。
$elems.eq(3).remove();
alert($elems.length);