Ich brauche mehrere divs und jeder von ihnen sollte in der Lage sein, in vier (!) Richtungen unabhängig voneinander durch Mausklick zu drehen.Mehrere rotierende divs mit Javascript
Aus dieser Frage (und einige andere) Ich habe ziemlich geeignete Weg gefunden, in 4 Richtungen drehen Rotate a div using javascript, hier (nicht in zwei, was viel einfacher ist) ist die fiddle
JS:
$(document).ready(function() {
var degree = 0; //Current rotation angle, 0->0, 1->90, 2->180, 3->270
$('.rotating').click(function() {
$(this).toggleClass('rotated' + degree.toString()); //Disable previous rotation
degree = (degree + 1) % 4;
$(this).toggleClass('rotated' + degree.toString()); //Add new rotation
});
});
Aber es funktioniert gut nur für ein rotierendes Element. Sobald ich den zweiten div hinzufügen, stoppt er wie erwartet funktioniert (Rotationen nicht unabhängig sind, versuchen Sie auf „A“ zuerst klicken und dann auf „B“)
<div class="rotating rotated0">A</div>
<div class="rotating rotated0">B</div>
Ich gehe davon aus, die Ursache ist, weil Ich verwende eine "Grad" -Variable und sie wird von meinen Divs geteilt. Also, das ist die Frage - wie kann ich mehrere divs implementieren, die unabhängig voneinander gedreht werden können?
Ich habe den Code aktualisiert nach ersten Antworten (geänderte ID-Klasse), aber Erstausstellung mit Unabhängigkeit ist noch an seinem Platz.
Danke, ich habe auch eine Anfangsdrehung div 'class = "Dreh rotated0"' hinzugefügt. Aber nach mehreren Versuchen habe ich festgestellt, dass Klicks nach wie vor nicht unabhängig sind. Klicken Sie zuerst auf div und dann auf div. Erwartetes Verhalten - beide sollten um 90 Grad gedreht sein. Aktuell - Sekunde wurde um 180 gedreht. –
Aktualisiert. Entfernte doppelte Zeile '$ (this) .toggleClass ('rotiert' + degree.toString());' – Dave
Es war kein Duplikat, es deaktivierte vorherige Transformation. Es funktioniert nicht ohne es (versuche, in Zyklus mehr zu rotieren als 4 mal) –