【问题标题】:jqueryui resizeable and draggable element is coveredjqueryui 可调整大小和可拖动的元素被覆盖
【发布时间】:2013-05-03 04:54:29
【问题描述】:

我有两个可拖动和可调整大小的元素。它们水平排列。 我的问题是当我尝试调整顶部第一个元素的大小时,下面的第二个元素位置会自动覆盖第一个元素。

下面是样式:

<style>
    #request-grid { width: 500px; min-height: 200px; margin: 10px; padding: 0.5em;}
    #bb-clist { width: 500px; min-height: 200px; margin: 10px; padding: 0.5em;}
    .ui-resizable-helper { border: 2px dotted #00F; }
</style>

下面是jqueryui代码:

$( "#request-grid" ).draggable({containment: "#content", scroll: true, stack: "#content div" });
$( "#bb-clist" ).draggable({containment: "#content", scroll:true, stack: "#content div"});

$( "#request-grid" ).resizable({
helper: "ui-resizable-helper",  containment: "#content"
});

$( "#bb-clist" ).resizable({
helper: "ui-resizable-helper", containment: "#content"
});

下面是html元素:

<div id="request-grid" class="ui-widget-content">
</div>

<div id="bb-clist" class="ui-widget-content">
</div>

在调整大小时,如果其他元素不覆盖/重叠其他元素,我将如何解决此问题。

谢谢。

【问题讨论】:

标签: javascript jquery jquery-ui jquery-ui-draggable jquery-ui-resizable


【解决方案1】:

HTML

<div>
    <div id="request-grid"></div>
    <br/>
    <div id="bb-clist"></div>
</div>

CSS

#request-grid {
    height:100px;
    width: 200px;
    min-height: 100px;
    margin: 10px;
    padding: 0.5em;
    background-color:pink;
}
#bb-clist {
    height:100px;
    width: 200px;
    min-height: 100px;
    margin: 10px;
    padding: 0.5em;
    background-color:blue;
}
.ui-resizable-helper {
    border: 2px dotted #00F;
}

jQuery

$(document).ready(function () {

    $("#request-grid").draggable({
        containment: "#document",
        scroll: false,
        stack: "#content div"
    });
    $("#bb-clist").draggable({
        containment: "#document",
        scroll: false,
        stack: "#content div"
    });

    $("#request-grid").resizable({
        helper: "ui-resizable-helper",
        containment: "document",
        resize: function (event, ui) {
            var height = (ui.size.height + 'px');
            $('#bb-clist').css('posotion', 'absolute').css('top', height);
        },
        stop: function (event, ui) {
            var h2 = (ui.size.height);
            if (h2 < 200) {
                h2 = 100; // set default min-height if re-sized less than min-height.
            }
            $('#bb-clist').css('posotion', 'absolute').css('top', h2);
        }

    });

    $("#bb-clist").resizable({
        helper: "ui-resizable-helper",
        containment: "document"
    });
});

工作演示 http://jsfiddle.net/cse_tushar/qkKV6/

【讨论】:

    【解决方案2】:

    您可以使用 z-index 值来克服重叠问题。

    只需为可调整大小的元素设置更高的 z-index 值,例如,

    #ResizableElement
    {
      z-index: 10;    //default is 1
    }
    

    具有较高 z-index 值的元素将始终与其他元素重叠。 您还可以为您的可拖动元素设置一个 z-index 值,这也可以。

    $("#request-grid").draggable({ zIndex: 10 });
    

    【讨论】:

    • 两个元素都可以调整大小和拖动它会工作吗?我假设它们都将具有相同的 zIndex。
    • 我认为这种情况可能行不通,我不确定。由于时间短缺,我无法编辑我的回复,但我想你已经找到了解决方案:)
    【解决方案3】:

    【讨论】:

    • 如果它对你有用,那就太好了。请接受对您有用的回复,以便其他人可以从中受益。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2011-04-20
    相关资源
    最近更新 更多