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

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

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

    });

上記は最初の重複 ID を削除しますが、最後の ID を削除したいと考えています。私は試してみまし$('#'+ this.id + ':last')たが、役に立ちませんでした。

フィドル

フィドルでは、追加アクションが行われるときに、値が「サンプル」の入力を保持する必要があります。

4

8 に答える 8

24

jquery フィルター:gt(0)を使用して最初の要素を除外します。

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

または、使用可能なすべての要素を選択してから、 を使用して最初の要素を除外し.slice(1)ます。

$('[id]').each(function (i) {
    $('[id="' + this.id + '"]').slice(1).remove();
});
于 2013-04-02T09:04:18.153 に答える
2

あなたが試すことができます

$("#ID").nextAll().remove();
于 2013-04-02T09:14:10.087 に答える
1

これを試して

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();            
    }
}

jsfiddle はhttp://jsfiddle.net/z4VYw/5/です

于 2013-04-02T09:13:37.983 に答える
0

not()現在の要素idsを削除し、残りを削除するために使用します。

(フィドル)

$('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;

        });

});
于 2013-04-02T09:06:50.243 に答える