我正在玩jsplumb,但我无法删除只有一个 div 的 id 的两个 div 之间的连接。
11 回答
要删除连接,请使用以下代码:
jsPlumb.deleteConnection(con)
出于某种原因,分离对我不起作用。他们的文档中没有提到上述方法,可能他们忘记更正他们的文档。
更新: 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);
});
我在文档中找到了解决方案(http://jsplumb.org/doc/usage.html)
jsPlumb.detachAllConnections("elementId");
如果源 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()
首先,您可以使用 sourceId 和 targetId 找到您的连接
var connections = jsPlumb.getConnections({
source: sourceId ,
target:targetId
});
这将返回一个 jsPlumb 连接数组,因此您可以删除与此源和目标 ID 相关的所有连接。
for(var i=0;i < connections.length;i++) {
jsPlumb.deleteConnection(connections[i]);
}
此代码删除了我正在开发的游戏中的所有“错误”连接。我希望它有帮助
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);
}
}
});
你好可以参考这个: 分离连接jsPlumb
如果单击连接,则此代码块允许分离连接:
jsPlumb.bind("click", function(conn) {
jsPlumb.detach(conn);
});
删除对我有用的连接
jsPlumb.bind("click", function(conn) {
// alert(JSON.stringify(data));
jsPlumb.deleteConnection(conn);
});
我想更新答案。对于 2.5 版,如果您使用
jsPlumb.detach()
您可能会收到错误消息:jsPlumb.detach() 不是函数。我也尝试
jsPlumb.deleteConnection(conn)
确实删除了连接,但是,我不确定为什么端点只是从 div 中分离出来。最后通过以下方式解决
instance.deleteConnection(conn)