jQuery SVG, warum kann ich keine Klasse hinzufügen?
Ich bin mit jQuery SVG. Ich kann nicht hinzufügen oder entfernen einer Klasse zu einem Objekt. Weiss jemand meinen Fehler???
Den SVG:
<rect class="jimmy" id="p5" x="200" y="200" width="100" height="100" />
Die jQuery-das wird nicht die Klasse hinzuzufügen:
$(".jimmy").click(function() {
$(this).addClass("clicked");
});
Ich weiß, die SVG und jQuery arbeiten zusammen gut, weil ich kann Ziel, das Objekt und das Feuer eine Warnung, wenn es angeklickt wird:
$(".jimmy").click(function() {
alert('Handler for .click() called.');
});
InformationsquelleAutor der Frage Don P | 2011-12-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
JQuery kann nicht fügen Sie eine Klasse, um eine SVG.
.attr()
arbeitet mit SVG, also, wenn Sie wollen, hängt von jQuery:Und wenn Sie nicht wollen, zu hängen, jQuery:
Bearbeiten 2016: Lesen Sie die nächsten zwei Antworten.
element.classList.add('newclass')
funktioniert in modernen BrowsernInformationsquelleAutor der Antwort forresto
Es ist element.classList in die DOM-API, das funktioniert für HTML-und SVG-Elemente. Keine Notwendigkeit SVG-plugin für jQuery oder sogar jQuery.
InformationsquelleAutor der Antwort Tomas Mikula
Wenn Sie dynamische Klassen oder nicht wissen, was Klassen konnten bereits angewendet wird diese Methode, wie ich glaube, der beste Ansatz:
InformationsquelleAutor der Antwort nav
Anhand der oben genannten Antworten habe ich die folgenden API -
InformationsquelleAutor der Antwort Sagar Gala
Nach dem laden
jquery.svg.js
müssen Sie diese Datei laden:http://keith-wood.name/js/jquery.svgdom.js
.Quelle: http://keith-wood.name/svg.html#dom
Beispiel: http://jsfiddle.net/74RbC/99/
InformationsquelleAutor der Antwort bennedich
Fügen Sie einfach die fehlenden Prototyp-Konstruktor alle SVG-Knoten:
Dann können Sie es auf diese Weise, ohne dass jQuery:
Alle Kredit geht an Todd Moto.
InformationsquelleAutor der Antwort
jQuery nicht unterstützt, die Klassen von SVG-Elemente. Sie können das element direkt
$(el).get(0)
und verwendenclassList
undadd /remove
. Es gibt einen trick, mit dieser zu, dass die oberste SVG-element ist eigentlich eine normale DOM-Objekt und kann verwendet werden wie jedes andere element in jQuery. In meinem Projekt habe ich das zu kümmern, was ich brauchte, aber die Dokumentation auf der Mozilla Developer Network verfügt über einen shim, der kann als alternative verwendet werden.Beispiel
Alternative alle härter zu verwenden D3.js wie Ihr selector-engine statt. Meine Projekte haben die charts, die sind gebaut, so ist es auch in meinem app-Bereich. D3 korrekt ändert die Attribute der Klasse und der Vanille DOM-Elemente und SVG-Elemente. Obwohl das hinzufügen von D3 nur für diesen Fall wäre wahrscheinlich overkill.
InformationsquelleAutor der Antwort QueueHammer
Hier ist meine eher unelegant, aber funktioniert code, der sich mit den folgenden Themen (ohne Abhängigkeiten):
classList
nicht vorhandene<svg>
Elemente im IEclassName
repräsentieren nicht dieclass
Attribut auf<svg>
Elemente im IEgetAttribute()
undsetAttribute()
ImplementierungenEs nutzt
classList
wo es möglich ist.Code:
Beispiel:
InformationsquelleAutor der Antwort Tim Down
Ich verwenden-Snap.svg auf Klasse hinzufügen, und SVG.
http://snapsvg.io/docs/#Element.addClass
InformationsquelleAutor der Antwort cjohndesign
Inspiriert von den Antworten, besonders von Sagar Gala, die ich angelegt habe dieses API. Sie können es verwenden, wenn Sie nicht wollen oder können nicht aktualisieren Sie Ihre jquery-version.
InformationsquelleAutor der Antwort Stonecrusher
Ich schrieb dies in mein Projekt, und es funktioniert... wahrscheinlich;)
Beispiele
InformationsquelleAutor der Antwort Dariusz Majchrzak
Oder benutzen Sie einfach das old-school-DOM-Methoden, wenn JQ hat ein Affe irgendwo in der Mitte.
Lernen Sie die DOM-Menschen. Auch im Jahr 2016 die framework-palooza es hilft ziemlich regelmäßig. Auch, wenn Sie hören immer jemandem zu vergleichen, der-DOM-zu-Versammlung, kick Sie für mich.
InformationsquelleAutor der Antwort Erik Reppen