A mousedown
Voglio iniettare un nuovo elemento nel DOM e iniziare a trascinarlo immediatamente (ovvero trigger dragstart
), senza fare nuovamente clic sul nuovo elemento.Inizializza elemento e avvia il trascinamento con un solo clic
Sto utilizzando d3.js molto nel mio progetto. Ma non so se posso attivare l'evento dragstart
utilizzando d3, così ho provato ad utilizzare jQuery:
$("circle#pen").trigger("dragstart");
Ma questo non funziona.
Questo è un collegamento a un jsFiddle, in cui viene illustrato il mio problema cercando di creare una "penna" a mousedown
e se l'utente trascina la penna disegna una linea. A dragend
la penna viene rimossa e la linea si attenua. Ma la penna deve essere inizializzata e quindi può essere trascinata da un nuovo clic. Questo è solo per dimostrare il problema.
Ecco un related question for jQuery, ma non ci sono buone risposte ad esso.
tale kludge ... –
@ TimSeguine Sono d'accordo, non una buona soluzione. Ma è stato quello che mi sono ritrovato nel 2013. Qual è la tua soluzione? – swenedo
In base a ciò che hai descritto, probabilmente metterei i gestori di eventi nell'area in cui la "penna" è autorizzata a funzionare. Il mousedown aggiunge la "penna" come hai già fatto. Un gestore mousemove aggiorna la posizione della "penna". Un gestore di mouseup elimina la "penna". Non c'è una vera ragione per insistere nel farlo con un comportamento di trascinamento a meno che non ci sia più di quello che hai descritto nella tua domanda. –