Sono in grado di fare clic su un nodo D3 per ottenere un alert()
; Messaggio. Sono in grado di trascinare anche il nodo D3, ma il trascinamento attiva anche il comportamento del clic quando viene rilasciato il mouse.Previene l'azione di clic durante il trascinamento di un nodo D3
C'è un modo per impedire il comportamento del clic dopo aver trascinato il nodo?
Questo è dove io chiamo trascinamento:
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter()
.append("g")
.attr("transform", function(d){return "translate("+d.x+","+d.y+")"})
.on("click", function(d){
if(d.user_id != "" && d.user_id != null){
parent.parent.openUserProfile(d.user_id);
}
})
.call(force.drag);
Una risposta al di sotto suggerisce di aggiungere qualcosa di simile a questo codice (sotto), ma penso che il codice di cui sopra anche deve essere modificato per farli lavorare insieme.
var drag = d3.behavior.drag();
drag.on("dragend", function() {
d3.event.sourceEvent.stopPropagation(); // silence other listeners
});
hai provato e.preventDefault? (dove e, è l'evento di click) – Tim
quello che ho fatto è stato un altro premere un pulsante, quindi posso fare clic e trascinare ma effettivamente fare clic (selezionare) il nodo che devo premere MAIUSC + tasto sinistro del mouse per farlo. Non so se vuoi dare un'occhiata a questo, solo un'idea :) – thatOneGuy
con la tua seconda domanda non passare force.drag alla funzione di chiamata, passare la variabile di trascinamento ad esso in questo modo: .call (trascinamento) – thatOneGuy