ドラッグアンドドロップ機能に問題があり、誰かが助けてくれることを望んでいます。一言で言えばルールは、次のとおりJQueryドラッグアンドドロップの配置に関する問題
つクローン化.pageControlを受け入れることができるよりも多く存在することができるの「ステージ」(.stage)。それが受け入れる唯一のクラスです。
.stageで一旦削除されると、.pageControlは.pageControlDroppedになり、クローンされた.wfcControlを受け入れることができます。それが受け入れる唯一のクラスです。
.wfcControlを削除すると、新しいhtmlに置き換えられ、.wfcControlDroppedになります。
私の問題は、次のとおりです。
私は.stageするクローン.pageControlをドラッグすると、それは私がそれを落としてるの位置ではありません.stage上の位置にジャンプします。私はそれを私が欲しいところにドラッグすることができますが、ドロップする場所にドロップする必要があります。 CSSの位置付けを試みましたが、.pageControlで動作するようです。 .pageControl-> .pageControlDroppedを実行すると、別の位置にジャンプします。また、例のように非常に流動的ではない
複数の.pageControlsを.stageにドラッグすると、いずれも.wfcControlを受け入れる必要があります。しかし、最初の.pageControl(今は.pageControlDropped)だけがそれを受け取るようです。 2番目の.pageControlDroppedを受け取ることができません。
.pageControlをどのようにして、既存のものをオーバーレイしないようにするには?
CSS:
<style type="text/css">
.stage { margin-left: -.3em; width: 500px; height: 550px; padding: 0.0em;}
.pageControl {height:15px; width:15px; background-color:#EAEEFF; border:1px solid blue;}
.pageControlDropped {height:450px; width:600px;background-color:#F9FAFF;border:1px solid blue;}
.wfcControl { }
.wfcControlDropped { }
</style>
はJQuery:最後に
$('.pageControl').draggable({
helper: 'clone',
snap: false,
containment: '.stage',
handle: '.wfcHandle',
stop: function (event, ui) {
var pos = $(ui.helper).offset();
$(this).css({
"left": pos.left,
"top": pos.top
});
}
});
$('.wfcControl').draggable({ helper: 'clone', containment: '.pageControlDropped' });
$('.stage').droppable({
accept: '.pageControl',
greedy: true,
drop: function (event, ui) {
$(this).append($(ui.helper).clone());
$('.stage .pageControl')
.removeClass('pageControl')
.addClass('pageControlDropped')
.resizable()
.draggable({
containment: '.stage',
handle: '.wfcHandle'
})
.droppable({
accept: '.wfcControl',
greedy: true,
drop: function (event, ui) {
switch (ui.helper[0].title) {
case "Play Greeting Control":
wfcControlDropped = wfcPlayGreetingControl
break;
case "Input Control":
wfcControlDropped = wfcInputControl
break;
}
$(this).append($(ui.helper).clone());
$('.pageControlDropped .wfcControl').replaceWith($(wfcControlDropped));
$('.pageControlDropped .wfcControlDropped')
.draggable({
containment: '.pageControlDropped'
})
}
}).clone(false)
return false;
}
});
、HTML:この上の任意の助けを
<div id = "divPageControl" title = "Page Control" class="pageControl">
<table style = "width:100%" border = "0">
<tr>
<td colspan = "1" width = "100%"></td>
</tr>
</table>
</div>
<div id = "divInputControl" title = "Input Control" class="wfcControl" style="height:15px; width:15px; background-color:light green; border:1px solid green;">
<table style = "width:100%" border = "0">
<tr class = "wfcHandle">
<td colspan = "1" width = "100%"> </td>
</tr>
</table>
</div>
感謝。
あなたはどのブラウザをテストしましたか?あなたは厳密なDOCTYPEを使用していますか? CSSをリセットしていますか? – anon
スイッチでブレークを取り除き、再度テストできますか?また、負のマージンを取り除くためのアドバイスもします。 – KutePHP
http://jsfiddle.net/にコードを追加すると、コードをテストするのが簡単になります – ygaradon