jsplumbで遊んでいますが、1つのdivのIDしかない2つのdiv間の接続を削除できません。
11 に答える
更新: jsPlumb はメソッドを実装しなくなりました
detach
。より最新のソリューションについては、以下の Rafik Bari の回答を参照してください。
要素との間で複数の接続がある場合、すべての接続を切り離すことは、接続を削除するための最良の解決策ではない可能性があります。正確に 1 つの接続を切断する (十分に文書化されていない) 関数があります。
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()
このコードは、私が開発しているゲームのすべての「間違った」接続を削除します。役立つことを願っています
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);
}
}
});
こんにちは、これを参照できます: Detach connection jsPlumb
このコード ブロックにより、接続がクリックされた場合に接続を切断できます。
jsPlumb.bind("click", function(conn) {
jsPlumb.detach(conn);
});
接続を削除するとうまくいきました
jsPlumb.bind("click", function(conn) {
// alert(JSON.stringify(data));
jsPlumb.deleteConnection(conn);
});