Mam problemy z funkcją przeciągania i upuszczania i mam nadzieję, że ktoś może pomóc. Zasady w skrócie to:Problemy z pozycjonowaniem przeciągnij i upuść JQuery
„etapu” (.stage) od której nie może być więcej niż może przyjąć sklonowany .pageControl. Jest to jedyna klasa, którą może zaakceptować.
Po upuszczeniu na scenę, .pageControl staje się .pageControlDropped i może akceptować sklonowane .wfcControl. Jest to jedyna klasa, którą może zaakceptować.
Po usunięciu .wfcControl, zostaje on zastąpiony nowym html i staje się .wfcControlDropped.
Moje problemy to:
Gdy przeciągam sklonowany .pageControl do .stage, to przeskakuje do pozycji na .stage że nie jest to pozycja jestem upuszczenie go. Mogę przeciągnąć go z powrotem tam, gdzie chcę, ale musi spaść tam, gdzie go upuszczę. Próbowałem pozycjonowania CSS, ale wydaje się działać na .pageControl. Raz .pageControl -> .pageControlDropped, przeskakuje do innej pozycji. Ponadto, nie jest to płynny opór, jak w przykładach. Jeśli przeciągnę wiele .pageControls do .stage, każdy z nich powinien zaakceptować .wfcControl. Ale wygląda na to, że tylko pierwsza .pageControl (teraz .pageControlDropped) je otrzymuje. Nie mogę uzyskać drugiej .pageControlDropped, aby ją odebrać.
Jak uzyskać kolejne .pageControl, aby nie nakładać istniejących na .stage?
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;
}
});
wreszcie 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>
Dzięki za wszelką pomoc w tej sprawie.
Które przeglądarki testowałeś? Czy używasz surowego DOCTYPE? Czy używasz resetowania CSS? – anon
Możesz pozbyć się przerwy w przełączniku i przetestować ponownie. Ponadto, radziłbym usunąć ujemny margines. – KutePHP
możesz dodać swój kod do http://jsfiddle.net/, więc łatwo przetestujesz swój kod – ygaradon