0

我正在 jsplumb API 的帮助下制作一个树结构。当父级我在 a 中删除一个项目时,jquery 在运行时根据父级 div 的位置创建另外两个 div。

   <div id="win" style="overflow: scroll">
        <div id="rootNode">Drag New item Here</div>
    </div>

拖动一个项目后,两个 div 正在创建

    //getting postion of parent node
        var left= parseInt((document.getElementById("node").style.left).replace("px",""));
        var top= parseInt((document.getElementById("node").style.top).replace("px",""));
    var idValue = //clicked node id which contains "node"
    Left child:     
    $("#win").append("<div id='"+idValue+"1' class='window droppable' style='left:"+(left-150)+"px; top:"+(top+80)+"px'>Drag New item Here</div>");

    Right Child:
    $("#win").append("<div id='"+idValue+"2' class='window droppable' style='left:"+(left+150)+"px; top:"+(top+80)+"px'>Drag New item Here</div>");

所有 div 都在#windiv内部创建

问题:丢弃项目后,两个孩子正在创建。如果右孩子跨越#windiv 的宽度,则出现 srcoll。但是如果左子元素越过#windiv 的宽度(在左侧,因为它正在创建当前节点的左侧),那么水平滚动不适用于左子 div。左节点正在使用 css.left 的值创建某处。这就是为什么即使使用滚动条也不可见我找不到左子节点,因为滚动条从 0 开始而不是从 -value 开始。

4

1 回答 1

0

left-150<0如果如下所示,我通过将所有元素向右移动来解决我的问题

    var left= parseInt((document.getElementById(idValue).style.left).replace("px",""));
    //left is clicked element's left css value

    if((left-150)<0){
            var leftShift=0-(left-150);
            $('[id^='+"node" + ']').css("left","+="+leftShift);
            //showTree();
    }

left在所有现有和新创建的节点的 css 属性中添加了 150 。

于 2016-08-24T16:22:46.483 回答