我在div中有这样的列表:
<div id="x">5,2,3,1,4,9,8</div>
如何从此列表中删除给定元素? 可以使用JQuery或JavaScript。
请注意,列表中的数字是唯一的,它们来自int(11)类型的数据库,它们没有任何顺序。
任何帮助赞赏的人......
答案 0 :(得分:4)
尝试使用toRemove
等于5,3或8,以确定它适用于所有情况:
var toRemove = 3; // the number you want to remove
$('#x').text($('#x').text().replace(new RegExp(toRemove + ',?'
+ '|,?' + toRemove + '$'), ''));
答案 1 :(得分:3)
首先,获取文字:
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);
答案 2 :(得分:1)
这是一个简单的解决方案,只需要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");
答案 3 :(得分:1)
真的不需要比这更难:
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
的好处是您可以使用它们来管理分隔符(例如逗号)。
答案 4 :(得分:1)
使用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(','));
(但我更喜欢RegEx解决方案,它应该更快)