2016-07-16 2 views
0

경로/링크에서 왼쪽 클릭을 감지 할 수 있습니까? 내가 mousedown 안에서 그것을 탐지하는 방법을 궁금해. 이 링크는 how-to-distinguish-between-left-and-right-mouse-click-with-jquery이지만 가능한 해결책 일 수 있습니다.경로에서 왼쪽 클릭을 감지하는 방법

코드에서 알 수 있습니다. 컨텍스트 메뉴에서 isLeftClick 변수에 true를 적용하여 mousedown을 클릭 할 때 isLeftClick 값이 false가되도록합니다. 그러나 문제는 mousedown이 먼저 갈 것입니다.

isLeftClick = false; 

path.enter().append('svg:path') 
.attr('class', 'link') 
.classed('selected', function(d) { return d === selected_link; 
}) 
.on('mousedown', function(d) { 
    // detect if it is right or left click 
    if(isLeftClick == true){ 
    //if left click do something 
    isDraggingLink = true; 
    } 
    restart(); 
}).on('contextmenu', function(d){ 
    isLeftClick = true; 
    // Open a context menu for link/path 
    console.log("link contextmenu"); 
}); 
+0

은'contextmenu' 이벤트가 mousedown' 이벤트가 트리거 된'후 트리거됩니다. 주문을 변경할 기회가 없습니다! 그냥'event.which'를 사용하십시오! –

+0

안녕하세요 @IsmailRBOUH $ (". link")와 함께 한 가지 .. mousedown (function (event) { switch (event.which) {}은 "link"요소로 반복됩니다. 또한 현재 링크 요소 만 감지 할 수 있습니까? –

+0

"클릭"이벤트에 지쳐 왔습니까? –

답변

1

'mousedown'콜백 내에서 d3.event 변수에 액세스 할 수 있습니다. 여기에는 콜백을 트리거 한 이벤트에 대한 전체 정보가 포함 된 DOM 이벤트에 대한 참조가 포함되어 있습니다.

이 작동합니다 https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#d3_event

https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent

참조 :

var leftButtonPressed = (d3.event.button === 0); 
+0

감사합니다. –

관련 문제