Na mousedown
Chcę wstawić nowy element do DOM i rozpocząć przeciąganie go natychmiast (tj. Wyzwalacz dragstart
), bez ponownego klikania nowego elementu.Inicjalizuj element i rozpocznij przeciąganie za pomocą jednego kliknięcia.
Często używam d3.js w moim projekcie. Ale nie wiem, czy uda mi się wywołać zdarzenie dragstart
za pomocą d3, więc próbowałem przy użyciu jQuery:
$("circle#pen").trigger("dragstart");
ale to nie działa.
Oto link do jsFiddle, gdzie mogę zademonstrować swój problem, próbując utworzyć "pióro" pod numerem mousedown
, a jeśli użytkownik przeciągnie pióro, rysuje linię. Przy dragend
pióro jest usuwane, a linia zanika. Ale pióro musi zostać zainicjalizowane, a następnie może zostać przeciągnięte za pomocą nowego kliknięcia. Ma to jedynie na celu wykazanie problemu.
Oto related question for jQuery, ale nie ma na nie dobrej odpowiedzi.
takie kludge ... –
@ TimSeguine Zgadzam się, nie jest dobrym rozwiązaniem. Ale to było to, co otrzymałem w 2013 roku. Jakie jest twoje rozwiązanie? – swenedo
Na podstawie tego, co opisałeś, prawdopodobnie umieściłbym programy obsługi zdarzeń w obszarze, w którym może działać "długopis". Mousedown dołącza "pióro" tak, jak już zrobiłeś. Poruszający kursorem myszy aktualizuje pozycję "pióra". Obsługa myszy usuwa "pióro". Nie ma żadnego powodu, aby nalegać na to, wykonując drag, chyba że jest w tym coś więcej niż opisałeś w swoim pytaniu. –