354 Stimmen

Ändern der ID eines Elements mit jQuery

Ich brauche, um die ID eines Elements mit jQuery zu ändern.

Offenbar funktionieren sie nicht:

jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"

Ich habe herausgefunden, dass ich das mit dem folgenden Code bewerkstelligen kann:

jQuery(this).prev("li")show(function() {
    this.id="newid";
});

Aber das scheint mir nicht richtig zu sein. Es muss doch einen besseren Weg geben, oder? Und falls es keine gibt, welche andere Methode kann ich anstelle von Ein-/Ausblenden oder anderen Effekten verwenden? Offensichtlich möchte ich nicht zeigen/verstecken oder beeinflussen das Element jedes Mal, nur um seine ID zu ändern.

(Ja, ich bin ein jQuery-Neuling.)

Editar
In diesem Fall kann ich keine Klassen verwenden, sondern muss IDs benutzen.

592voto

Eran Galperin Punkte 84916

Ihre Syntax ist falsch, Sie sollten den Wert als zweiten Parameter übergeben:

jQuery(this).prev("li").attr("id","newId");

90voto

Jeremy Moritz Punkte 12002

A PREFERRED OPTION gegenüber .attr ist zu verwenden .prop etwa so:

$(this).prev('li').prop('id', 'newId');

.attr ruft das Attribut des Elements ab, während .prop ruft die Eigenschaft ab, auf die das Attribut verweist (d. h. das, was Sie eigentlich zu ändern beabsichtigen)

47voto

Pim Jager Punkte 31389

Was Sie tun wollen, ist:

jQuery(this).prev("li").attr("id", "newID");

Dadurch wird die ID auf die neue ID gesetzt

11voto

Ich habe etwas Ähnliches mit diesem Konstrukt gemacht

$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});

7voto

Tim Knight Punkte 8304

Ich bin nicht sicher, was Ihr Ziel ist, aber könnte es besser sein, stattdessen addClass zu verwenden? Ich meine, eine Objekt-ID sollte meiner Meinung nach statisch und spezifisch für dieses Objekt sein. Wenn Sie nur versuchen, es von der Anzeige auf der Seite oder so etwas zu ändern, würde ich diese Details in eine Klasse setzen und dann fügen Sie es dem Objekt, anstatt zu versuchen, es zu ändern ID. Nochmals, ich sage das, ohne Ihr unterstrichenes Ziel zu verstehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X