如何解决从列表中删除元素-JQuery / JavaScript
| 我在div中有一个这样的列表:<div id=\"x\">5,2,3,1,4,9,8</div>
如何简单地从此列表中删除给定元素?
可以使用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);
, 尝试使用等于5、3或8的toRemove
尝试此操作,以确保它适用于所有情况:
var toRemove = 3; // the number you want to remove
$(\'#x\').text($(\'#x\').text().replace(new RegExp(toRemove + \',?\'
+ \'|,?\' + toRemove + \'$\'),\'\'));
参见示例→
, 也可以使用jQuery的grep方法:
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
的好处是您可以使用它们来管理分隔符(例如逗号)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。