Jestem w stanie kliknąć węzeł D3, aby uzyskać alert()
; wiadomość. Jestem też w stanie przeciągnąć węzeł D3, ale przeciąganie powoduje również kliknięcie po zwolnieniu myszy.Zapobieganie kliknięciu podczas przeciągania węzła D3
Czy istnieje sposób, aby zapobiec kliknięciu po przeciągnięciu węzła?
To właśnie nazywam drag: poniżej
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);
Jedna odpowiedź sugeruje, dodając coś jak ten kod (poniżej), ale myślę, że powyższy kod także musi zostać zmodyfikowany, aby uczynić je ze sobą współpracować.
var drag = d3.behavior.drag();
drag.on("dragend", function() {
d3.event.sourceEvent.stopPropagation(); // silence other listeners
});
próbowałeś e.preventDefault? (gdzie e, jest zdarzeniem kliknięcia) – Tim
to, co zrobiłem, dotyczyło innego naciśnięcia przycisku, więc mogę kliknąć i przeciągnąć, ale aby faktycznie kliknąć (wybrać) węzeł muszę nacisnąć w dół shift + lewy przycisk myszy, aby to zrobić. Nie wiem, czy chcesz się do tego zaglądać, po prostu pomysł :) – thatOneGuy
z drugim pytaniem nie przekazywać force.drag do funkcji wywołania, przekazać zmienną przeciągnięcia do niej tak: .call (przeciągnij) – thatOneGuy