12

我正在玩jsplumb,但我无法删除只有一个 div 的 id 的两个 div 之间的连接。

4

11 回答 11

10

要删除连接,请使用以下代码:

jsPlumb.deleteConnection(con)

出于某种原因,分离对我不起作用。他们的文档中没有提到上述方法,可能他们忘记更正他们的文档。

于 2018-01-31T01:59:49.967 回答
8

更新: jsPlumb 不再实现该detach方法。请参阅下面的Rafik Bari 的回答,了解更新的解决方案。

如果您有多个来自或到元素的连接,则分离所有连接可能不是删除连接的最佳解决方案。有一个(没有很好记录的)函数可以完全分离一个连接:

jsPlumb.detach(connection, {
    fireEvent: false, //fire a connection detached event?
    forceDetach: false //override any beforeDetach listeners
})

在我的示例中,我想在单击连接器时删除连接:

 jsPlumb.bind('click', function (connection, e) {
     jsPlumb.detach(connection);
 });
于 2012-12-13T10:31:38.113 回答
7

我在文档中找到了解决方案(http://jsplumb.org/doc/usage.html)

jsPlumb.detachAllConnections("elementId");
于 2012-07-15T17:58:40.887 回答
4

如果源 div 或目标 div id 已知,则可以像这样删除连接:

var conn = jsPlumb.getConnections({
              //only one of source and target is needed, better if both setted
              source: sourceId,
              target: targetId
            });
if (conn[0]) {
  jsPlumb.detach(conn[0]);
}

您还可以使用 jsPlumb.getAllConnections() 获取所有连接的数组,并测试每个连接的 sourceId 或 targetId 以获得您需要的连接;

于 2014-04-03T05:57:25.097 回答
2

删除所有端点连接,到元素和从元素删除后,您需要将其分离,如第 3 行所示

jsPlumb.detachAllConnections(divID);
jsPlumb.removeAllEndpoints(divID);
jsPlumb.detach(divID); 
divID.remove()
于 2016-05-30T04:53:44.627 回答
1
jsPlumb.deleteConnectionsForElement(elementId)

作品。虽然它已经过时了,但我想补充一点,找出一个库有哪些方法,只要它足够自描述就很容易了。

开发工具

于 2017-06-06T06:44:45.993 回答
1

首先,您可以使用 sourceId 和 targetId 找到您的连接

var connections = jsPlumb.getConnections({
            source: sourceId ,
            target:targetId  
        });

这将返回一个 jsPlumb 连接数组,因此您可以删除与此源和目标 ID 相关的所有连接。

for(var i=0;i < connections.length;i++) {
            jsPlumb.deleteConnection(connections[i]);
        }
于 2018-05-10T10:22:34.827 回答
0

此代码删除了我正在开发的游戏中的所有“错误”连接。我希望它有帮助

var wrong_connections = new Array(DB_ID, ANOTHER_DB_ID);
var connections = jsPlumb.getConnections();
$.each(connections, function(index, value) { // going through all connections
  var source_id = value.source.attr('id').substring(28);  // I need the ID from DB so I`m getting it from the source element
  for (var a = 0; a < wrong_connections.length; a++) {  
    if (source_id == wrong_connections[a]) {
      jsPlumb.detach(value);
    }
  }
});
于 2013-03-15T16:56:26.717 回答
0

你好可以参考这个: 分离连接jsPlumb

如果单击连接,则此代码块允许分离连接:

jsPlumb.bind("click", function(conn) {
    jsPlumb.detach(conn);
});
于 2013-09-17T09:30:10.607 回答
0

删除对我有用的连接

jsPlumb.bind("click", function(conn) {
    // alert(JSON.stringify(data));
    jsPlumb.deleteConnection(conn);
 });
于 2018-08-03T08:10:48.873 回答
0

我想更新答案。对于 2.5 版,如果您使用

jsPlumb.detach()

您可能会收到错误消息:jsPlumb.detach() 不是函数。我也尝试

jsPlumb.deleteConnection(conn)

确实删除了连接,但是,我不确定为什么端点只是从 div 中分离出来。最后通过以下方式解决

instance.deleteConnection(conn)
于 2018-05-04T02:32:11.530 回答