从列表中删除元素 - JQuery / JavaScript

时间:2011-06-13 01:07:28

标签: javascript jquery list element

我在div中有这样的列表:

<div id="x">5,2,3,1,4,9,8</div>

如何从此列表中删除给定元素? 可以使用JQuery或JavaScript。

请注意,列表中的数字是唯一的,它们来自int(11)类型的数据库,它们没有任何顺序。

任何帮助赞赏的人......

5 个答案:

答案 0 :(得分:4)

尝试使用toRemove等于5,3或8,以确定它适用于所有情况:

var toRemove = 3; // the number you want to remove
$('#x').text($('#x').text().replace(new RegExp(toRemove + ',?'
                                               + '|,?' + toRemove + '$'), ''));

See example →

答案 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(','));
}

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

答案 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解决方案,它应该更快)