0

我遇到了 jsPlumb 的 deleteEndpoint 函数的问题。

我想删除没有任何连接的端点。我希望它触发“连接”,但我认为那里可能存在一些问题。

但我将我的代码移动到“dblclick”,我看到了同样的问题。标记为删除的节点之一被删除,但系统中的每个端点都被冻结在原地 - 一旦被拖动,就与它的元素断开连接。我不确定是什么原因造成的:这是相关代码和一些屏幕截图......

jsPlumb.bind("dblclick", function(c) { 

            alert('starting...');

            var endpoints_to_delete = new Array();
            jsPlumb.selectEndpoints({source:c.sourceId}).each(function(endpoint) {
                if( endpoint.connections.length <= 0 )
                    endpoints_to_delete.push(endpoint);
            });
            jsPlumb.selectEndpoints({source:c.targetId}).each(function(endpoint) {
                if( endpoint.connections.length <= 0 )
                    endpoints_to_delete.push(endpoint);
            });

            alert(endpoints_to_delete.length); // 3

            $.each(endpoints_to_delete, function(endpoint) {
                jsPlumb.deleteEndpoint(endpoint);
            });

        }); 

这是我尝试删除端点之前的图表 - 所有端点仍然完好无损,它们附加的可拖动元素。 尝试删除额外端点之前的图表

尝试删除端点后,每个端点都会与其元素断开连接...... dblclick 尝试删除额外端点后的图表

4

1 回答 1

0

单独循环遍历每个元素并删除端点对我有用-我认为当我开始使用第一个元素的端点时,对第二个元素上的端点的引用会受到损害。氢。

    deleteEmptyEndpoints: function(element)
    {
        var endpoints_to_delete = [];
        jsPlumb.selectEndpoints({source:element}).each(function(endpoint) {
            console.log(endpoint);
            if( !!endpoint && endpoint.connections.length <= 0 )
            {
                console.log('marking ' + endpoint.getId() + ' for deletion');
                endpoints_to_delete.push(endpoint);
            }
        });

        $.each(endpoints_to_delete, function(index, endpoint) {
            console.log('deleting endpoint: ' + endpoint);
            jsPlumb.deleteEndpoint(endpoint);
            console.log('endpoint deleted');

        });
    }
于 2013-09-21T00:48:17.900 回答