免责声明:我完全了解id
属性适用于unique
ID。在我的情况下,当ajax请求比平时花费更长时间时,它可能会出现故障,导致两条相同的聊天消息。我也知道有类似的问题,但是我找不到解决问题的方法。
这就是我想要做的事情:
chat_log
中是否有任何重复的ID?我尝试使用以下代码:
$('[id]').each(function () {
var ids = $('[id=' + this.id + ']');
if (ids.length > 1 && ids[0] == this) {
$(ids[1]).remove();
}
});
但我不确定如何使这种方法适应我的情况,也不确定是否可能。
答案 0 :(得分:2)
您如何确保某些东西是独一无二的?让我们说你有一堆蔬菜(黄瓜,萝卜,比萨饼等)。你想确保颜色的独特性,确保任何颜色只出现一次。你是怎么做到的?
我要做的就是列出清单。我会检查每一种蔬菜,检查它的颜色。如果颜色已经在列表中,我们将从该堆中删除该蔬菜。否则,我们保持原样并将其颜色添加到我们的列表中。
一旦理解了这个逻辑,我们所需要的只是将其转换为代码!这是多么微不足道的事情(当然,在纸面上。)
//assumes $elem is the element you're deleting duplicates in
//create the ids list we'll check against
var ids = {};
//go over each element
var children = $elem.children();
for ( var i = 0, len = children.length; i < len; i++ ) {
var id = children[ i ].id;
//was this id previously seen?
if ( ids.hasOwnProperty(id) ) {
$( children[i] ).remove();
}
//a brand new id was discovered!
else {
ids[ id ] = true;
}
}
//done!
这是一个非常简单,简单的逻辑版本。你可以用一些奇怪的嘶嘶声选择器做出更多更好的方式,但这应该让你开始。
演示(没有jquery):http://tinkerbin.com/qGJpPsAQ
答案 1 :(得分:1)
您的代码应该有效,但它只删除具有相同ID的第二个元素,请尝试:
$('[id]').each(function() {
var $ids = $('[id=' + this.id + ']');
if ($ids.length > 1) {
$ids.not(':first').remove();
}
});