24/11/2013, 16:41
|
| Colaborador | | Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses Puntos: 1012 | |
Respuesta: mouse up no funciona correctamente has de eliminar el evento onmouseover cuando se produzca el evento onmouseup. unas pocas correcciones Cita: var 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 foo;
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;documen t.body.style.cursor = 'auto';
document.onmouseup=function(){active=false;documen t.body.style.cursor = 'auto';
console.log(active + ' - mouseup');
objetivo.removeEventListener('mouseover', foo);
};
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.s tyle.cursor = 'auto';};
ordenable.addEvent(objetivo, 'mouseover', foo =function(){
to=event.target||event.srcElement;
console.log(active + ' - mousedown y mouseover');
if(active==true){
if(from.attributes.factor.value>to.attributes.fact or.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(); |