【问题标题】:Connecting jQuery UI dialogs with a line using JsPlumb使用 JsPlumb 将 jQuery UI 对话框与线条连接起来
【发布时间】:2011-08-30 16:51:32
【问题描述】:

我正在使用名为 jsPlumb - http://jsplumb.org/jquery/demo.html 的 jQuery 插件,我想将我的 jQuery UI 对话框与 jsPlumb 生成的行连接起来。但我想不出办法。

我有这个来源:

<div id="okenko1">Tuhle neco je</div>
<div id="okenko2">Tuhle je neco jineho</div>

当我使用 jQuery UI 从这个 div 创建对话框时

$("#okenko1").dialog()...

然后我做铅垂:

jsPlumb.connect({source: $("#okenko1"), target: $("#okenko2")});

它的错误 :-D 看起来像这样 http://prntscr.com/2udde

我试图扭转这个过程,先探测 em,然后使用对话框,结果在这里http://prntscr.com/2udef

接下来我尝试探测由 UI 创建的 div,它不起作用...

接下来我能做什么?我真的需要用线连接页面上的两个元素,当我移动其中一个元素时它会移动,但我找不到比 jsPlumb 更好的东西。

【问题讨论】:

  • 但是我发布了我的代码,页面上没有其他内容,只有 jquery、jquery ui、js plumb、2 个 div 和一个带有对话框创建和 jsplumb 连接的 js :)

标签: jquery jquery-ui jquery-ui-dialog jsplumb


【解决方案1】:

我在 jsfiddle 中做了一个小样本:http://jsfiddle.net/p8XUm/4/

html:

<span id="okenko1">Tuhle neco je</span>
<span id="okenko2">Tuhle je neco jineho</span>

javascript:

var d = $("#okenko1").dialog({drag: function(event, ui){
    jsPlumb.repaint(d);
}}).parent('.ui-dialog');
jsPlumb.connect({source: $("#okenko2"), target: d});

您应该使用父对话框元素作为铅垂端点,而不是 div 本身。 d = $("#okenko1").parent(".ui-dialog")

更多关于可拖动端点的信息可以在documentation中找到

更新:移动对话框时示例现在可以工作!

【讨论】:

  • 非常感谢伙计!非常好的演示,我正在尝试弄清楚如何在拖动时重新绘制线条......
  • 非常好!我也找到了这种方法,但它仅在其中一个 div 是对话框时才有效。当我尝试与他们对话时,我得到“未捕获的类型错误:无法读取 null 的属性 'left'”。我找到了解决方法,但我不喜欢它。我创建了像对话框一样移动和调整大小的覆盖 div,并在该 div 上附加了铅垂。它有效,但我不喜欢它:)
  • jsfiddle.net/p8XUm/7 jsPlumb 的源元素必须有一个 id 属性
  • 你是救命稻草 :) 只是一个问题,为什么只有一个对话框具有该 ID 时它会起作用?
  • jsPlumb 似乎只需要源元素的 id。如果您想从另一个对话框(作为源)画一条线到另一个元素,该对话框也需要一个 id。
猜你喜欢
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
相关资源
最近更新 更多