【发布时间】:2012-07-14 08:12:30
【问题描述】:
我正在玩jsplumb,但我无法删除只有一个 div 的 id 的两个 div 之间的连接。
【问题讨论】:
-
链接现在指向一个链接农场。
标签: javascript jsplumb
我正在玩jsplumb,但我无法删除只有一个 div 的 id 的两个 div 之间的连接。
【问题讨论】:
标签: javascript jsplumb
我在文档 (http://jsplumb.org/doc/usage.html) 中找到了解决方案
jsPlumb.detachAllConnections("elementId");
【讨论】:
更新: jsPlumb 不再实现
detach方法。请参阅下面的Rafik Bari's answer 以获取更新的解决方案。
如果您有多个来自或到元素的连接,则分离所有连接可能不是删除连接的最佳解决方案。有一个(没有很好记录的)函数可以完全分离一个连接:
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);
});
【讨论】:
此代码删除了我正在开发的游戏中的所有“错误”连接。 希望对你有帮助
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);
}
}
});
【讨论】:
您好,可以参考: Detach connection jsPlumb
如果单击连接,此代码块允许分离连接:
jsPlumb.bind("click", function(conn) {
jsPlumb.detach(conn);
});
【讨论】:
如果源 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 以准确获取您需要的连接;
【讨论】:
在删除所有端点连接后,到元素和从元素删除后,您需要将其分离,如第 3 行所示
jsPlumb.detachAllConnections(divID);
jsPlumb.removeAllEndpoints(divID);
jsPlumb.detach(divID);
divID.remove()
【讨论】:
g_instance = jsPlumb.getInstance(...., Container: "flowchart-demo") 然后:g_instance.detachAllConnections(divID);
【讨论】:
要删除连接,请使用以下代码:
jsPlumb.deleteConnection(con)
由于某种原因,分离对我不起作用。他们的文档中没有提到上述方法,可能他们忘记更正他们的文档。
【讨论】:
.reset()。
我想更新答案。对于 2.5 版本,如果您使用
jsPlumb.detach()
您可能会收到错误消息:jsPlumb.detach() 不是函数。我也试试
jsPlumb.deleteConnection(conn)
连接确实被删除了,但是,我不确定为什么端点只是从 div 中分离出来。最后解决了
instance.deleteConnection(conn)
【讨论】:
首先,您可以使用 sourceId 和 targetId 找到您的连接
var connections = jsPlumb.getConnections({
source: sourceId ,
target:targetId
});
这将返回一个 jsPlumb 连接数组,因此您可以删除与此源和目标 id 相关的所有连接。
for(var i=0;i < connections.length;i++) {
jsPlumb.deleteConnection(connections[i]);
}
【讨论】:
删除对我有用的连接
jsPlumb.bind("click", function(conn) {
// alert(JSON.stringify(data));
jsPlumb.deleteConnection(conn);
});
【讨论】: