7

jQuery ui ドラッグ可能を使用していますが、appendTo オプションが機能しません。ただし、コンテインメントやグリッドなどの他のオプションは適切に機能します。コードは次のとおりです。

HTML

<div id="demo">
</div>
<div id="sidebar">
    <div class="item">
    </div>
    <div class="item">
    </div>
    <div class="item">
    </div>
    <div class="item">
    </div> 
</div>

脚本

jQuery(".item").draggable({ appendTo: "#demo", grid: [ 10, 10 ], containment: "#demo" });

CSS

#demo {
    width: 500px;
    height: 500px;
    border: 1px solid black;
    float: left;
}
#draggable {
    background: red;
    width: 50px;
    height: 50px;
}
#sidebar {
    float: left;
    width: 300px;
}
.item {
    cursor: pointer;
    background: black;
    width: 100px;
    height: 100px;
    margin: 10px;
}

これがライブデモです: http://jsfiddle.net/fzjev/

4

3 に答える 3

4

It looks like for the appendTo option to be recognized the item being dragged has to be outside of the body.

From jQuery UI 1.8.18 (around line 275)

if(!helper.parents('body').length)
  helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));

In your example the if statement evaluates to false, so the appendTo logic is not fired.

于 2012-03-10T16:28:39.707 に答える
0

私の場合、これらの例はうまくいきます:

$("[drag='true']").draggable({
    drag: handleDragDrag,
    start: handleDragStart,
    stop: handleDragStop,
    helper: 'clone',
    appendTo: 'body'
})
function handleDragStart(ev, ui) {
    $(this).show();
}
function handleDragDrag(ev, ui) {
}
function handleDragStop(ev, ui) {
    $(this).show();
}
于 2016-09-12T11:23:54.910 に答える