Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D3树和定位带节点的JQuery UI对话框_Jquery_Jquery Ui_D3.js - Fatal编程技术网

D3树和定位带节点的JQuery UI对话框

D3树和定位带节点的JQuery UI对话框,jquery,jquery-ui,d3.js,Jquery,Jquery Ui,D3.js,我有一个D3树,需要右键单击节点旁边的jQueryUI对话框 对话框的位置不能使用$(“#dialog”)。dialog('option','position',[d.x,d.y]) 其他位工作,只是位置不工作。有什么想法吗?我想让对话框显示在右键单击的节点的左侧 传递给jQuery对话框的位置是从当前视图的左上角测量的(无论滚动的数量如何)。我非常怀疑这些是d.x和d.y值,它们似乎是相对于SVG的坐标 也就是说,您可以使用和。如果要使用D3的事件,它们是D3.event.clientX和D3

我有一个D3树,需要右键单击节点旁边的jQueryUI对话框

对话框的位置不能使用
$(“#dialog”)。dialog('option','position',[d.x,d.y])

其他位工作,只是位置不工作。有什么想法吗?我想让对话框显示在右键单击的节点的左侧


传递给jQuery
对话框的位置是从当前视图的左上角测量的(无论滚动的数量如何)。我非常怀疑这些是
d.x
d.y
值,它们似乎是相对于SVG的坐标


也就是说,您可以使用和。如果要使用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 }

这是您的分叉JSIDLE:

建议您在执行
open
之前设置
位置
选项。此外,函数被传递
d
,但您调用
d3.event.preventDefault()
。不知道在哪里定义了
d3
。我相信d3.event是一个全局变量-请参阅,谢谢,但对话框只是位于屏幕的中心,而不是相对于节点。对话框在别处没有其他位置。这是在OP中更新的打开之前设置的位置。我认为可能是对话框位置语句有问题。
d3.event.clientX
Y
将返回您单击的位置。恐怕没有什么可以做的,除非您提供一个工作代码,以便我们可以测试解决方案。fiddle添加到OPAre您确定您的jQuery部分是正确的吗?文档中说,
position
需要一个对象:我认为我的JQuery位置不受欢迎。我看到了更新的位置,但不确定如何将其用于d3节点。
{my: "left top", at: "left top", of: event }