Código:
la pega la tengo en esta lineavar ordenable = { bindClass : 'ordename', install : function() { ordenable.addEvent(window, 'load', ordenable.init); }, addEvent : function(el, evnt, func) { if(el.addEventListener) { el.addEventListener(evnt, func, false); } else if(el.attachEvent) { el.attachEvent('on'+evnt, func); } }, init : function() { var matchClass = new RegExp('(^|\\s)('+ordenable.bindClass+')\\s*(\\{[^}]*\\})?', 'i'); var e = document.getElementsByTagName('ul'); for(var i=0; i<e.length; i+=1) { if(!e[i].orden && e[i].className && (m = e[i].className.match(matchClass))) { if(m[3]) { try { prop = (new Function ('return (' + m[3] + ')'))(); } catch(eInvalidProp) {} } e[i].orden = new ordenable.orden(e[i]); } } }, orden : function(target){ var objetivo=target; var elementos=objetivo.getElementsByTagName('li'); var from=null; var to=null; var active=false; var comodin=null; document.onmouseup=function(){active=false;document.body.style.cursor = 'auto';}; target.onselectstart = function(){return false;}; for(var x=0;x<elementos.length;x++){ elementos[x].setAttribute('factor', x); elementos[x].onmousedown=function (){ from=event.target||event.srcElement; active=true; document.body.style.cursor = 'move'; return false; }; elementos[x].onmouseup=function(){active=false;document.body.style.cursor = 'auto';}; elementos[x].onmouseover=function (){ to=event.target||event.srcElement; if(active==true){ if(from.attributes.factor.value>to.attributes.factor.value){ target.insertBefore(from, to); }else{ target.insertBefore(from, to.nextSibling); } elementos=objetivo.getElementsByTagName('li'); for(var x=0;x<elementos.length;x++){ elementos[x].setAttribute('factor', x); } } }; } } } ordenable.install();
Cita:
el cursor lo cambia correctamente y si meto un alert, salta allá donde suelte el ratón pero la variable active parece que no se queda en false cuando suelto el ratón fuera de la lista.document.onmouseup=function(){active=false;documen t.body.style.cursor = 'auto';};
y tengo 3 listas distintas en la misma página que se ven afectadas por este componente, que no se si será que al hacer el mouseout, el navevador no determina bien de que objeto es el mouse out
para probarlo, simplemente llamais al archivo.js y en una lista ul le poneis de clasname "ordename" todas las listas con ese classname que se encuentren se harán ordenables
(los espacios varios y guarradas por el estilo son cosas del foro, que en verdad el codigo no contiene errores de sintaxis)