javascript jQuery:查找重复的ID并删除除第一个ID以外的所有ID

h7appiyu  于 2023-01-04  发布在  Java
关注(0)|答案(9)|浏览(182)
$('[id]').each(function () {

        var ids = $('[id="' + this.id + '"]');

        // remove duplicate IDs
        if (ids.length > 1 && ids[0] == this) $('#' + this.id).remove();

    });

以上将删除第一个重复的ID,但我想删除最后一个。我已经尝试了$('#'+ this.id + ':last'),但无济于事。
Fiddle
在fiddle中,当附加操作发生时,应该保留值为“sample”的输入。

cczfrluj

cczfrluj1#

使用jquery过滤器:gt(0)排除第一个元素。

$('[id]').each(function () {
    $('[id="' + this.id + '"]:gt(0)').remove();
});

或者选择所有可用元素,然后使用.slice(1)排除第一个元素。

$('[id]').each(function (i) {
    $('[id="' + this.id + '"]').slice(1).remove();
});
omtl5h9j

omtl5h9j2#

试试看:

$('[id="' + this.id + '"]:not(#" + this.id + ":first)').remove();
brgchamk

brgchamk3#

你可以试试

$("#ID").nextAll().remove();
cwxwcias

cwxwcias4#

$('[id]').each(function() {
   var $ids = $('[id=' + this.id + ']');
   if ($ids.length > 1) {
     if(this.id === your_id)//which is duplicating
         $ids.not(':first').remove();
     }
});
rggaifut

rggaifut5#

这段代码比其他一些代码要长,但是双嵌套循环应该使其操作显而易见。
这种方法的优点是,它只需要扫描DOM来生成具有id属性 once 的元素列表,然后使用同一列表来查找(并删除)重复的元素。
已删除的元素将具有parentNode === null,因此在迭代数组时可以跳过。

var $elems = $('[id]');
var n = $elems.length;

for (var i = 0; i < n; ++i) {
    var el = $elems[i];
    if (el.parentNode) {  // ignore elements that aren't in the DOM any more
        var id = el.id;
        for (var j = i + 1; j < n; ++j) {
            var cmp = $elems[j];
            if (cmp.parentNode && (cmp.id === id)) {
                $(cmp).remove();  // use jQuery to ensure data/events are unbound
            }
        }
    }
}
py49o6xq

py49o6xq6#

试试这个

var duplicated = {};

$('[id]').each(function () {   

    var ids = $('[id="' + this.id + '"]');

    if ( ids.length <= 1 ) return  ;

    if ( !duplicated[ this.id ] ){
         duplicated[ this.id ] = [];   
    }       

    duplicated[ this.id ].push( this );

});

// remove duplicate last ID, for elems > 1 
for ( var i in duplicated){

    if ( duplicated.hasOwnProperty(i) ){  

             $( duplicated[i].pop() ).remove();            
    }
}

而jsfidle是http://jsfiddle.net/z4VYw/5/

lymgl2op

lymgl2op7#

我将使用not()ids中移除当前元素,并移除其余元素:
Fiddle

$('body').on("click", ".placeholder", function() {

    data = '<section id="e1"><input name="e1name" /></section><section id="two"><input name="two" value="two section" /></section>';

    $('form').append(data);

        // ideally I'd like to run this function after append but after googling I find that's not possible.
        // for each ID ...
        $('[id]').each(function () {

            var ids = $('[id="' + this.id + '"]');

            if (ids.length>1) {                    
                ids.not(this).remove();            
            }

            return;

        });

});
gkn4icbw

gkn4icbw8#

尝试使用下面的功能对我来说很好:

$('#favourities-ajax ul li').each(function(i) {
      $('[id="' + this.id + '"]').slice(1).remove();
      });
muk1a3rh

muk1a3rh9#

//This will remove all except the last child.
$('#my_id:not(:last-child)').slice(0).remove();

//This will remove all except the first child.
$('#my_id').slice(1).remove();

相关问题