有没有办法查询jsPlumb以检索“source”和“target”属性具有相同父div的所有连接?目前,我手动设置每个连接的“范围”属性(基于父div的id),这是有效的。然而,感觉hacky。我觉得好像应该有一些方法来查询jsPlumb,如
jsPlumb.select('#parentDiv').each(function(connection) {
/*do stuff here*/
});
答案 0 :(得分:0)
在创建连接时,您可以单独检查和存储这些连接,而不是稍后检查它们。代码:
jsPlumb.bind("jsPlumbConnection", function(ci) {
var s=ci.sourceId,c=ci.targetId;
var f=$('#'+s).parent().attr("id");
var g=$('#'+c).parent().attr("id");
if( f===g ){
// store ci.connection
console.log("Connection:"+ ci.connection +" has same parent div");
}
});
答案 1 :(得分:0)
这是你可以将它限制在一个特定的父div和amp;使用'实例'对于每个jsPlumb操作:
jsPlumb.ready(function () {
instance = jsPlumb.getInstance({
DragOptions: { cursor: 'pointer', zIndex: 2000 },
ConnectionOverlays: [
["Arrow", { width: 12, length: 15, location: -3 }],
],
Container: "parent" //put parent div id here
});
});
答案 2 :(得分:0)
function containsCycle() {
var return_content = false;
$('.item:visible').each(function() {
$(this).addClass("white");
});
$('.item:visible').each(function() {
$vertex = $(this);
if ($vertex.hasClass("white")) {
if (visit($vertex)) {
return_content = true;
return false;
}
}
});
return return_content;
}
function visit(vertex) {
vertex.removeClass("white")
.addClass("grey");
var vertex_connections = jsPlumb
.getConnections({
source: vertex
});
for (var i = 0; i < vertex_connections.length; i++) {
if ($('#' + vertex_connections[i].targetId)
.hasClass("grey")) {
return true;
} else if ($('#' + vertex_connections[i].targetId)
.hasClass("white")) {
if (visit($('#' + vertex_connections[i].targetId))) {
return true;
}
}
}
vertex.removeClass("grey")
.addClass("black");
return false;
}
使用此代码查找循环连接