从列表中删除元素 – JQuery / JavaScript
我在div中有这样的列表:
5,2,3,1,4,9,8
如何从列表中删除给定元素? 可以使用JQuery或JavaScript。
请注意,列表中的数字是唯一的,它们来自int(11)类型的数据库,它们不是任何顺序。
任何帮助赞赏的人……
首先,得到文字:
var text=$("#x").text();
然后分开它:
var items=text.split(',');
如果没有项目,您将有一个空字符串作为数组的唯一元素。 如果是,请清空数组:
if(items.length==1&&items[0]=="") { items=[]; }
现在将所有内容转换为整数:(请注意,实际上并不需要此步骤,但如果您正在对items
执行任何其他操作,那么很高兴)
items=items.map(function(str) { return parseInt(str, 10); });
将要删除的项目放在变量中:
var itemToRemove=3;
在数组中找到:
var index=items.indexOf(itemToRemove);
如果找到它,将它拼接出数组:
if(index!==-1) { items.splice(index, 1); }
将这些物品重新加入:
text=items.join(',');
把它放回元素中:
$("#x").text(text);
尝试使用toRemove
等于toRemove
或8来查看它适用于所有情况:
var toRemove = 3; // the number you want to remove $('#x').text($('#x').text().replace(new RegExp(toRemove + ',?' + '|,?' + toRemove + '$'), ''));
见例→
使用jQuery的grep-method也可能是一个选项:
var toRemove=1; $('#x').text( $.grep($('#x').text().split(','), function (a) { return a != toRemove; }).join(','));
要删除多个项目:
var toRemove=[1,8,3]; $('#x').text( $.grep($('#x').text().split(','), function (a) { return $.inArray(Number(a),toRemove)<0; }) .join(','));
(但我更喜欢RegExp解决方案,它应该更快)
这是一个简单的解决方案,只需要jquery。
function removeFromDiv(which) { var data = $("#x").html(); data_arr = data.split(","); for (var i = 0; i < data_arr.length; i++) { if (data_arr[i] == which) { data_arr.splice(i, 1); data = data_arr.join(","); } } $("#x").html(data); }
然后简单地运行:
removeFromDiv("4");
真的不需要比这更难:
function removeIndexFromX(index) { // Build array from comma-delimited content var arr = $("#x").text().split(','); // Remove index (zero-based) arr.splice(index, 1); // Replace $("#x").text(arr.join(',')); } function removeNumberFromX(num) { var arr = $("#x").text().split(','); for (var i = 0; i < arr.length; i++) { if (arr[i] === num) { arr.splice(i, 1); } } $("#x").text(arr.join(',')); }
split
和join
的好处是您可以使用它们来管理分隔符(例如逗号)。