从列表中删除元素 – 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(',')); } 

splitjoin的好处是您可以使用它们来管理分隔符(例如逗号)。