jsPlumb how to remove duplicate connections
我试图避免在使用 jsPlumb 时出现重复连接(2 个具有相同源和目标的连接)。有没有办法做到这一点而不必修改 jsPlumb.js 本身?
http://jsfiddle.net/uQdfq/
(从 task1 拖到 task3 两次)
我不想像 (1) 那样受到添加特定端点的限制。
我的 .task 在被调用时被定义为可能的目标/源 – 也就是说,整个 div 可以是源/目标,而不仅仅是某个端点:
1
|
addTask($(‘#project1’), ‘task’ + 1);
|
函数本身:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Adds a task div to the specific project
function addTask(parentId, id) { var newState = $(”).attr(‘id’, id).addClass(‘task’) // A title for the task $(parentId).append(newState); // Makes the task div a possible target (i.e. connection can be dragged to) // Makes the task div a possible source (i.e. connection can be dragged from) |
添加一些条件以阻止创建重复连接的可能性的最佳方法是什么。
- jsfiddle.net/LrjEC
1
2 3 4 5 6 7 |
jsPlumb.bind(‘connection’,function(info){
var con=info.connection; var arr=jsPlumb.select({source:con.sourceId,target:con.targetId}); if(arr.length>1){ jsPlumb.detach(con); } }); |
每当创建新连接时,请检查是否已经存在具有相同来源的连接
- 谢谢你。非常便利。我做了一个轻微的调整,以便它还检查当前源是否是当前目标的目标(所以基本上你将无法进行反向连接),即: var arr2 = jsPlumb.select({ source: con.targetId, target: con.sourceId }); 然后我只需要做 if (arr.length + arr2.length > 1)
- 这不是正确的答案,因为 detach(con) 在某些情况下不会正确删除所有端点:jsplumb.org/doc/removing.html。更好的方法是在首先建立连接之前进行检查。看到这个:stackoverflow.com/questions/22959893/…
- @user590849 OP 从不想删除端点,您的情况可能会有所不同。
- 我收到这样的错误: jsPlumb: fire failed for event connection : TypeError: jsPlumb.detach is not a function。该怎么办?
来源:https://www.codenong.com/24154919/