Позиция, переданная в jQuery dialog
, измеряется от верхнего левого угла текущего представления (независимо от количества прокрутки).Я очень сомневаюсь, что это значения d.x
и d.y
, которые кажутся координатами относительно вашего SVG.
При этом вы можете использовать clientX
и clientY
.Если вы хотите использовать события D3, это d3.event.clientX
и d3.event.clientY
:
.on( 'contextmenu', function ( d ) {
d3.event.preventDefault();
$( '#dialog' ).dialog( 'option', 'title', d.name );
$( '#dialog' ).dialog( 'open' );
$( "#dialog" ).dialog('option', 'position', [d3.event.clientX,d3.event.clientY])
});
Редактировать: в соответствии с документацией jQuery , вы не должны передавать массив координат, новместо этого объект, например:
{my: "left top", at: "left top", of: event }
Вот ваш раздвоенный JSFiddle: https://jsfiddle.net/589w62L3/