2016-07-16 2 views
0

Можно ли обнаружить левый клик по пути/ссылке. Мне интересно, как обнаружить это внутри mousedown. Я вижу эту ссылку how-to-distinguish-between-left-and-right-mouse-click-with-jquery, но может быть возможным решением.Как мы можем обнаружить левый щелчок по пути

Как вы можете видеть в коде. Я применил true к переменной isLeftClick в контекстном меню, так что, когда я нажимаю на mousedown, значение isLeftClick равно false. Но проблема в том, что утка будет идти первым.

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». И если у меня есть 5 ссылок. Он также будет обнаруживать 5 раз. Как мы можем обнаружить только текущий элемент ссылки? –

+0

У вас есть сообщение «click»? –

ответ

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

Это лучший ответ. Спасибо @tato. –

Смежные вопросы