【发布时间】:2011-06-13 01:07:28
【问题描述】:
我在 div 中有一个这样的列表:
<div id="x">5,2,3,1,4,9,8</div>
如何简单地从此列表中删除给定元素? 可以使用 JQuery 或 JavaScript。
请注意,列表中的数字是唯一的,它们来自 int(11) 类型的数据库,它们没有任何顺序。
任何帮助感谢大家...
【问题讨论】:
标签: javascript jquery list element
我在 div 中有一个这样的列表:
<div id="x">5,2,3,1,4,9,8</div>
如何简单地从此列表中删除给定元素? 可以使用 JQuery 或 JavaScript。
请注意,列表中的数字是唯一的,它们来自 int(11) 类型的数据库,它们没有任何顺序。
任何帮助感谢大家...
【问题讨论】:
标签: javascript jquery list element
用等于 5、3 或 8 的 toRemove 试试这个,看看它是否适用于所有情况:
var toRemove = 3; // the number you want to remove
$('#x').text($('#x').text().replace(new RegExp(toRemove + ',?'
+ '|,?' + toRemove + '$'), ''));
【讨论】:
33, 之类的内容。使用new RegExp('[^,]' + toRemove + '(?=[$,])')
new RegExp('(^|,)' + toRemove + ',|,' + toRemove + '$') 并替换为 $1
首先,获取文本:
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);
【讨论】:
使用 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");
【讨论】:
for...in;如果有人扩展了Array.prototype,它也会遍历这些属性。
forEach(但请注意,某些较旧的浏览器不支持forEach),或者使用for(var i=0, l=myArray.length; i<l; i++)。
l。或者,不缓存长度,你可以使用这个:for(var i=0; i<myArray.length; i++)
真的不需要比这更难:
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 的好处是您可以使用它们来为您管理分隔符(例如逗号)。
【讨论】: