当前位置: 首页 > 知识库问答 >
问题:

jsPlumb连接器显示错误路径

史绍晖
2023-03-14

运行下面的代码段,将至少两个项目拖到中心,按“创建”按钮并尝试连接endpoint以查看问题。

当我尝试连接来自不同div的endpoint时,它们实际上是连接的,但问题是,连接路径显示错误。它始终连接源endpoint所在的同一个div中的endpoint。尽管如此,如果您将鼠标悬停在我真正想要连接的点上,这表明连接已经完成,甚至拖动也可以工作。亲自尝试一下,获得完整的体验。

$(document).ready(function() {
  $('#deviceName li').draggable({
    helper: 'clone',
    revert: 'invalid'
  });
  $('#interface li').draggable({
    helper: 'clone',
    revert: 'invalid'
  });
  $('#display li').draggable({
    helper: 'clone',
    revert: 'invalid'
  });
  $('#output li').draggable({
    helper: 'clone',
    revert: 'invalid'
  });
function foo(){
  $('.foo').each(function() {
    $(this).draggable({
      containment: $(this).parent(),
      stack: '.foo'
    });
  });
}
  $('#mainDiv').droppable({
    drop: function(event, ui) {
      if (!ui.draggable.hasClass('foo')) {
        var title = ui.draggable.text().trim();
        var item = $('<div class="foo">').append('<table class="elementTable"><tr><th class="thClass">' + title + '</th></tr><tr class="tableBody"><td class="tableConn">Link 1</td></tr><tr><td class="tableConn">Link 2</td></tr></table>');
        item.draggable();
        $(this).append(item);
        foo();
      }
    }
  });
});
    
html {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  background: #2c2c2c;
  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzJjMmMyYyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjM3JSIgc3RvcC1jb2xvcj0iIzNkM2QzZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjY2JSIgc3RvcC1jb2xvcj0iIzM1MzUzNSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjY2JSIgc3RvcC1jb2xvcj0iIzM1MzUzNSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMxMzEzMTMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
  background: -moz-linear-gradient(left, #2c2c2c 0%, #3d3d3d 37%, #353535 66%, #353535 66%, #131313 100%);
  background: -webkit-gradient(linear, left top, right top, color-stop(0%, #2c2c2c), color-stop(37%, #3d3d3d), color-stop(66%, #353535), color-stop(66%, #353535), color-stop(100%, #131313));
  background: -webkit-linear-gradient(left, #2c2c2c 0%, #3d3d3d 37%, #353535 66%, #353535 66%, #131313 100%);
  background: -o-linear-gradient(left, #2c2c2c 0%, #3d3d3d 37%, #353535 66%, #353535 66%, #131313 100%);
  background: -ms-linear-gradient(left, #2c2c2c 0%, #3d3d3d 37%, #353535 66%, #353535 66%, #131313 100%);
  background: linear-gradient(to right, #2c2c2c 0%, #3d3d3d 37%, #353535 66%, #353535 66%, #131313 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2c2c2c', endColorstr='#131313', GradientType=1);
}

body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}

#leftDiv {
  display: inline-block;
  width: 16%;
  min-height: 100%;
  border-right: 3px solid white;
  box-sizing: border-box;
  float: left;
  margin: 0;
  padding: 5px;
}

#mainDiv {
  display: inline-block;
  width: 64%;
  min-height: 100%;
  border-right: 3px solid white;
  box-sizing: border-box;
  float: left;
  margin: 0;
  padding: 5px;
}

#rightDiv {
  display: inline-block;
  width: 20%;
  box-sizing: border-box;
  min-height: 100%;
  float: left;
  margin: 0;
  padding: 5px;
}

.foo {
  max-width: 250px;
  text-align: center;
  min-height: 50px;
  border: 1px solid white;
  border-radius: 10px;
}

.foo table {
  width: 100%;
}

.thClass {
  border-radius: 10px;
  border-bottom: 1px solid white;
  margin: 0;
  padding: 0;
  width: 100%;
  text-align: center;
}
.tableConn{
    width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/themes/overcast/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsPlumb/1.4.1/jquery.jsPlumb-1.4.1-all-min.js"></script>
<script type="text/javascript">
        $(document).ready(function(){
            $("#btn").click(function(){
                $(".tableConn").each(function(){
                    if(!$(this).hasClass('_jsPlumb_endpoint_anchor_')){
                        jsPlumb.addEndpoint($(this), {
                            anchor: "Right",
                            isSource:true,
                            isTarget:true,
                            connector:"Straight",
                            endpoint:"Rectangle",
                            paintStyle:{ fillStyle:"white", outlineColor:"blue", outlineWidth:1 },
                            hoverPaintStyle:{ fillStyle:"lightblue" },
                            connectorStyle:{ strokeStyle:"blue", lineWidth:1 },
                            connectorHoverStyle:{ lineWidth:2 }
                        });
                        jsPlumb.addEndpoint($(this), {
                            anchor: "Left",
                            isSource:true,
                            isTarget:true,
                            connector:"Straight",
                            endpoint:"Rectangle",
                            paintStyle:{ fillStyle:"white", outlineColor:"blue", outlineWidth:1 },
                            hoverPaintStyle:{ fillStyle:"lightblue" },
                            connectorStyle:{ strokeStyle:"blue", lineWidth:1 },
                            connectorHoverStyle:{ lineWidth:2 }
                        });
                    }
                });
            });
        });
    </script>
</head>
<body style="font-family: Arial; color: white;">
    <div id="leftDiv">
        <ul id="menu">
            <li>Device Name
                <ul id="deviceName">
                    <li>
                      item 1
                    </li>
                </ul>
            </li>
            <li>Interface
                <ul id="interface">
                    <li>
                      item 2
                    </li>
                </ul>
            </li>
            <li>Display
                <ul id="display">
                    <li>
                      item 3
                    </li>
                </ul>
            </li>
            <li>Output
                <ul id="output">
                    <li>
                      item 4
                    </li>
                </ul>
            </li>
        </ul>
    </div>
    <div id="mainDiv">
        <button id="btn">create</button>
    </div>
    <div id="rightDiv">
    
    </div>
</body>
</html>

共有1个答案

巫马泰
2023-03-14

我找到了解决办法。简单地说,表没有唯一的ID。设置后,一切正常。

 类似资料:
  • 我想画一个流程图。我动态创建div,并为每个div设置了唯一的“id”属性,并使用Jsplumb连接器连接它们。 我从数据库中获取源和目标id(请注意,动态创建的div的“id”属性是其从数据库中的id),并存储在“connectors”json中。其格式如下: {[from:A,to:B],[from:A,to:C],[from:B,to:C]} jsplumb代码如下 问题: 我现在拥有的是

  • 我试图通过Jenkins在UBUNTU AWS/VM上使用XVFB执行无头铬硒测试。 预构建执行外壳程序: 当构建开始时,我看到: 最后: 现在,通过 MAC 上的终端,我使用 命令连接到 VM。 并使用 VNC 查看器,我正在连接到本地主机:5900。它连接了,但我只看到一个黑屏。我期待屏幕上的Chrome浏览器窗口。 我该如何解决这个问题并在vncviewer上观看Chrome window?

  • 我试图以编程方式建立一些连接。问题是,当绘制连接时,会创建新的endpoint,而现有endpoint不再可单击。我确实有拖动行为的endpoint。我无法让endpoint(由连接创建)具有与原始endpoint相同的属性。 我做了一个工作jsFiddle:http://jsfiddle.net/SCSaf/4/ 在下面的代码中,初始化容器并绘制连接 在公共变量中,我尝试将源endpoint(e

  • 我们正在进行一个项目,该项目使用JSPlumb进行工作流呈现,并维护一个单独的数据模型,其中包括节点(id、位置、文本等)和连接,使用JSPlumb.bind使其与事件保持同步 当我开始重新创建连接时,我使用源和目标参数调用jsPlumb.connect,但ID似乎是在幕后创建的,因此与从数据模型加载的内容不匹配。这将是好的,除了在我不想删除该连接的ID从模型。。。 有没有办法手动设置连接器的ID

  • 我在这里使用jsPlumb的演示: 在此演示中,无法将现有连接移动到不同的目标节点。知道怎么做吗? 其他一些示例具有可移动的连接,但它们也使用节点上的特定endpoint。我喜欢这个特定的示例,其中我可以将连接终结点拖动到目标节点的任何点。

  • 我正在使用jsplumb,但是我无法删除两个只有一个div的id的div之间的连接。