Heim > Web-Frontend > js-Tutorial > Warum funktioniert jQuery addClass() nicht mit SVG-Elementen und wie kann ich das Problem beheben?

Warum funktioniert jQuery addClass() nicht mit SVG-Elementen und wie kann ich das Problem beheben?

DDD
Freigeben: 2024-12-04 20:25:16
Original
264 Leute haben es durchsucht

Why Doesn't jQuery addClass() Work with SVG Elements, and How Can I Fix It?

jQuery SVG: Lösung des addClass()-Dilemmas

Während jQuery SVG eine bequeme Möglichkeit zur Interaktion mit SVG-Elementen bietet, können Benutzer auf Schwierigkeiten beim Hinzufügen oder Entfernen von Klassen zu SVG stoßen Objekte. Dieses Problem ist auf die Unfähigkeit von jQuery zurückzuführen, Klassenattribute für SVG-Elemente vor Version 3 zu verarbeiten.

Das Problem verstehen

Der bereitgestellte SVG-Code:

<rect>
Nach dem Login kopieren

Und die jQuery Code:

$(".jimmy").click(function() {
    $(this).addClass("clicked");
});
Nach dem Login kopieren

demonstriert die Unfähigkeit von jQuery, die „angeklickte“ Klasse zum SVG-Rect hinzuzufügen. Obwohl beim Klicken auf das Objekt eine Warnung ausgelöst werden kann, schlägt das Hinzufügen oder Entfernen von Klassen fehl.

Lösung

Option 1: Upgrade auf jQuery 3 oder höher

jQuery 3 führte erhebliche Verbesserungen bei den SVG-Verarbeitungsfunktionen ein, einschließlich der Möglichkeit, Klassenattribute zu bearbeiten. Ein Upgrade auf jQuery 3 oder höher sollte dieses Problem beheben.

Option 2: Verwenden Sie .attr() oder setAttribute() für jQuery bzw. Vanilla JS

Ohne Upgrade Für jQuery 3 können Sie die Methode .attr() in jQuery oder die Methode setAttribute() in Vanilla JavaScript verwenden, um die SVG-Klasse zu ändern Attribute.

jQuery

$("#item").attr("class", "oldclass newclass"); // Add a class
$("#item").attr("class", "oldclass"); // Remove a class
Nach dem Login kopieren

Vanilla JavaScript

var element = document.getElementById("item");
element.setAttribute("class", "oldclass newclass"); // Add a class
element.setAttribute("class", "oldclass"); // Remove a class
Nach dem Login kopieren

Mit diesen alternativen Ansätzen können Sie erfolgreich sein Fügen Sie Klassen zu SVG-Elementen in jQuery oder Vanilla JavaScript hinzu oder entfernen Sie sie, auch ohne ein Upgrade auf jQuery 3.

Das obige ist der detaillierte Inhalt vonWarum funktioniert jQuery addClass() nicht mit SVG-Elementen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage