Я играю с jsplumb, но не могу удалить соединение между двумя div, имеющими только id одного div.
Как удалить соединение jsPlumb
Ответ 1
Обновление: jsPlumb больше не реализует метод
detach
. Смотрите ответ рафика Бари ниже для более актуального решения.
Если у вас несколько подключений к элементам или к элементам, отсоединение всех подключений может быть не лучшим решением для удаления подключения. Существует (недостаточно хорошо документированная) функция для отключения ровно одного соединения:
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);
});
Ответ 2
Чтобы удалить соединение, используйте следующий код:
jsPlumb.deleteConnection(con)
По какой-то причине detach не работает для меня. Описанный выше метод не упоминается в их документах, вероятно, они забыли исправить свои документы.
Ответ 3
Я нашел решение в документации (http://jsplumb.org/doc/usage.html)
jsPlumb.detachAllConnections("elementId");
Ответ 4
Если исходный div или целевой идентификатор div уже известен, вы можете удалить соединение следующим образом:
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() для получения массива всех подключений и протестировать каждый источник connectionId или targetId для получения именно того соединения, которое вам нужно;
Ответ 5
После того, как все соединения с конечной точкой удаляются из элемента и из него, вам необходимо отделить его, как показано в третьей строке
jsPlumb.detachAllConnections(divID);
jsPlumb.removeAllEndpoints(divID);
jsPlumb.detach(divID);
divID.remove()
Ответ 6
Этот код удаляет все "неправильные" соединения в игре, которую я разрабатываю. Я надеюсь, что это поможет
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);
}
}
});
Ответ 7
Привет, вы можете обратиться к этому: Отсоединить соединение jsPlumb
Этот блок кода позволяет отсоединить соединение, если было нажато соединение:
jsPlumb.bind("click", function(conn) {
jsPlumb.detach(conn);
});
Ответ 8
jsPlumb.deleteConnectionsForElement(elementId)
работает. Хотя я и старую, я хотел бы добавить, что выяснение того, какие методы имеет библиотека, при условии, что она достаточно описательная, достаточно проста.
Ответ 9
Я хочу обновить ответ. Для версии 2.5, если вы используете
jsPlumb.detach()
вы можете получить сообщение об ошибке, что: jsPlumb.detach() не является функцией. И я тоже пытаюсь
jsPlumb.deleteConnection(conn)
соединение действительно удалено, однако я не уверен, почему конечная точка просто отсоединяется от div. Наконец, это решается с помощью
instance.deleteConnection(conn)
Ответ 10
Во-первых, вы можете найти ваше соединение, используя sourceId и targetId
var connections = jsPlumb.getConnections({
source: sourceId ,
target:targetId
});
Это вернет массив соединений jsPlumb, поэтому вы можете удалить все соединения, связанные с этим источником и целевым идентификатором.
for(var i=0;i < connections.length;i++) {
jsPlumb.deleteConnection(connections[i]);
}
Ответ 11
Удалить соединение работало у меня
jsPlumb.bind("click", function(conn) {
// alert(JSON.stringify(data));
jsPlumb.deleteConnection(conn);
});