Sorry, Jungs .. hatte keine Zeit, weiter zu erklären, da wir in der Nähe waren, Sackgasse. Hier ist, was ich benutze:
Es gibt drei divs mit der '.groupWrapper' Klasse angewendet, #listaUno # listaDos # listaInicial. Es gibt zwei Arten von div-Modulen, alle schwebend links, mit grundsätzlich unterschiedlichen Breiten, 167x159 und 342x159, und der Container #listaUno hat eine gesetzte Breite von 346px (kann zwei kleine Module oder ein großes enthalten), während #listaDos 690px (bis zu vier kleine Module).
Mit Sortables aus dem jQuery-UI ..
$(document).ready(function(){
//change png to gif for IE as its very jumpy
if ($.browser.msie) {
$("img.iconico").attr("src", function() {
valor = this.src.replace(".png",".gif");
return valor;
});
}
//all three groupWrapper div elements are now draggable
$(".groupWrapper").sortable({
connectWith: '.groupWrapper',
items: 'div',
scroll: true,
opacity: 0.6,
receive: function(event, ui) { hemosCambiado(); }
});
$(".groupWrapper").disableSelection();
});
function init() {
$(".groupWrapper").sortable({
connectWith: '.groupWrapper',
items: 'div',
scroll: true,
opacity: 0.6,
receive: function(event, ui) { hemosCambiado(); }
});
$(".groupWrapper").disableSelection();
};
function hemosCambiado() {
var obj;
elemListaUno = $('#listaUno div').size(); //num elements in listaUno
elemListaDos = $('#listaDos div').size(); //num elements in listaDos
elemListaInicial = $('#listaInicial div').size(); //num elements in listaInicial
anchoLista1 = $('#izquierda').width(); //should be 346px;
anchoLista2 = $('#caja-modulos2').width(); //should be 690px;
//listaUno should have 2 or less elements, less than given width
anchoElems1 = 0;
$('#listaUno div').each(function(i,elem) {
anchoElems1 += $(elem).width();
});
if((elemListaUno>2) || (anchoElems1>anchoLista1)){
//surplus elements are sent back to listaInicial
$('#listaInicial').append($('#listaUno div:last-child'));
}
//listaUno should have 4 or less elements, less than given width
anchoElems2 = 0;
$('#listaDos div').each(function(i,elem) {
anchoElems2 += $(elem).width();
});
if((elemListaDos>4) || (anchoElems2>anchoLista2)){
//surplus elements are sent back to listaInicial
$('#listaInicial').append($('#listaDos div:last-child'));
}
$(".groupWrapper").sortable('refresh');
init(); //for some reason, elements appended aren't included as dragable again in IE versions, so the need to be initialized again.
}
Dieses auf FireFox funktioniert ziemlich gut, IE7, Safari, etc ... aber auf IE6, Elemente, die gezogen werden, einige schreckhaft Sachen unter anderen Seitenelemente, oder erhalten Sie mit der Maus, aber 500px weg davon, und verschiedene andere chaotisch Sachen ..
Bitte senden Sie HTML und Javascript, auch wenn die Variablennamen und Funktionen in Spanisch sind. Sie werden immer eine Antwort erhalten, wenn Sie Code eingeben, als wenn Sie es nicht tun. – ichiban