Gram z jsplumb, ale nie jestem w stanie usunąć połączenia między dwoma elementami div mającymi tylko id jednego div.Jak usunąć połączenie jsPlumb
Odpowiedz
znalazłem rozwiązanie w dokumentacji (http://jsplumb.org/doc/usage.html)
jsPlumb.detachAllConnections("elementId");
Jeśli masz wiele połączeń z lub do elementów, odłączając wszystkie połączenia nie może najlepsze rozwiązanie, aby usunąć połączenie. Jest tam (nie jest dobrze udokumentowane) funkcja odłączyć dokładnie jedno połączenie:
jsPlumb.detach(connection, {
fireEvent: false, //fire a connection detached event?
forceDetach: false //override any beforeDetach listeners
})
W moim przykładzie chcę usunąć połączenia, gdy złącze kliknięciu:
jsPlumb.bind('click', function (connection, e) {
jsPlumb.detach(connection);
});
Ten kod usuwa wszystkie " złe "połączenia w grze, którą rozwijam. Mam nadzieję, że to pomaga
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);
}
}
});
Hi można odnieść do tego: Detach connection jsPlumb
Ten fragment kodu pozwala odłączyć połączenia, jeśli połączenie zostało kliknięte:
jsPlumb.bind("click", function(conn) {
jsPlumb.detach(conn);
});
Jeśli źródło div lub docelowy identyfikator div jest już znany, możesz usunąć połączenie w następujący sposób:
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]);
}
Możesz również użyć jsPlumb.getAllConnections(), aby uzyskać tablicę wszystkich połączeń i przetestować każdy identyfikator źródła lub celI każdego połączenia, aby uzyskać dokładnie to, czego potrzebujesz;
Po wszystkich punktów końcowych połączenia do iz elementu zostaną usunięte, trzeba go odłączyć, jak pokazano w 3 linii
jsPlumb.detachAllConnections(divID);
jsPlumb.removeAllEndpoints(divID);
jsPlumb.detach(divID);
divID.remove()
jsPlumb.deleteConnectionsForElement(elementId)
robót. Choć jest stary, chciałbym dodać, że ustalenie, jakie metody ma biblioteka, pod warunkiem, że jest wystarczająco czytelne, jest dość łatwe.
Z jakiegoś powodu, odczepić nie działają. Nawet nie zgłoszono ich w bibliotece. Myślę, że zapomnieli poprawić swoje dokumenty. Aby usunąć połączenie, użyj następującego kodu:
jsPlumb.deleteConnection(con)
Pracowałem dla mnie. Ale użyłem instancji jsPlumb zamiast nazywając ją wprost: 'g_instance = jsPlumb.getInstance (...., kontener "flowchart-demo")' a następnie: 'g_instance.detachAllConnections (divId);' – matt
Odłączenie połączeń pozostawia wszystkie punkty końcowe w miejscu bez dezorientowania reszty wykresu, biorąc pod uwagę jego względność. Tak długo, jak jest wykonywany, sposób, w jaki są pobierane instancje, tak naprawdę nie wpłynie na resztę kodu. –