【问题标题】:jsPlumb endpoints not updated when div moves without being dragged当 div 移动而不被拖动时,jsPlumb 端点未更新
【发布时间】:2014-06-17 00:48:36
【问题描述】:

我正在使用jsPlumb。我有 .project 容器,其中包含 .task div。这些.task div 是 jsPlumb 连接的源/目标。 .project 容器是可拖动的。

http://jsfiddle.net/8Af7s/

.task div 在创建时被分配了源/目标属性(使用 jQuery 创建):

 // Makes the task div a possible target (i.e. connection can be dragged to)
 jsPlumb.makeTarget(newState, {
   anchor:["Continuous", { faces:["left", "right"] } ]
 });

 // Makes the task div a possible source (i.e. connection can be dragged from)
 jsPlumb.makeSource(newState, {
   anchor:["Continuous", { faces:["left", "right"] } ]
 });

.tasknewState

 var newState = $('<div>').attr('id', id).addClass('task')

现在要删除一个任务,我有一个静态按钮,它只是断开与该任务的所有连接并将其删除:

 $('#removetask1').click(function(e) {
     jsPlumb.detachAllConnections($('#task1'));
     $('#task1').remove();
     //jsPlumb.repaintEverything();
 })

如果删除的task div 位于project 的顶部,则当其他tasks 向上移动时会出现问题

另外,添加行(即取消注释):

 jsPlumb.repaintEverything();

在 remove 函数调用结束时解决了问题,但是当.project div 被拖动时,问题仍然存在


task1 被删除之前:

task1 被删除后task2 向上移动并取而代之,但连接仍假定task2 位于底部:

【问题讨论】:

  • 通过这个 SO 链接的小提琴链接,你可能会有一些想法:stackoverflow.com/questions/23882199/…
  • 谢谢,我遇到了那个链接,尽管 jQuery.draggable 在我的情况下它会出人意料地工作(有时它会工作,很多时候它会阻止其他元素响应)。
  • 太难过了,怎么解决了这个问题?

标签: javascript jquery jsplumb


【解决方案1】:

在删除元素之前分离所有连接然后重新绘制其余连接会有所帮助。 不要忘记将连接数据存储在一侧(没有那些必须与元素一起删除的数据),然后运行

jsPlumb.detachEveryConnection();

删除元素,然后为您在此之前保存的每个连接删除 jsPlumb.connect({...})。

更新 jsfiddle:http://jsfiddle.net/kvtbffrj/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多