Извините, ребята ... не было времени, чтобы объяснить дальше, так как мы были близки к тупику.
Вот что я использую:
Существует три элемента div с примененным к ним классом .groupWrapper, #listaUno #listaDos #listaInicial. Существует два вида модулей div, все с плавающей левой стороны, с принципиально различной шириной, 167x159 и 342x159, и контейнеры #listaUno имеют установленную ширину 346px (может содержать два маленьких модуля или один большой), в то время как #listaDos имеет 690px ( до четырех небольших модулей).
Использование сортируемых таблиц из 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.
}
Это очень хорошо работает в FireFox, IE7, Safari и т. Д., Но в IE6 элементы, которые перетаскиваются, выполняют некоторые броские действия под другими элементами страницы или связываются с мышью, но на расстоянии 500 пикселей от нее, и другие другие грязные вещи ..