2010-11-10 14 views
8

Mouseup no se dispara en la barra de desplazamiento para los elementos añadidos dinámicamente (excepto Firefox):¿Error de Mouseup en todos los navegadores excepto en Firefox?

CSS:

#dBox { 
    height: 100px; 
    width: 230px; 
    overflow - y: auto; 
} 

HTML:

<input type="text" id="s">

JQuery:

$(function() { 
    $('#s').focus(function() { 
     var $dbox = $('<ul id="dBox"></ul>'); 
     for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>'); 
     $(this).after($dbox); 
     $dbox.bind("mouseup", function() { 
      alert('in: '); 
      //console.log ('in: '); 
     }); 
    }); 
}); 
// OR LIKE THIS 
$('#s').focus(function() { 
    var $dbox = $('<ul id="dBox"></ul>'); 
    for (i = 0; i < 10; i++) $dbox.append('<li>' + i + '</li>'); 
    $(this).after($dbox); 

}); 
$('#dBox').live("mouseup", function() { 
    alert('in: '); 
    //console.log ('in: '); 
}); 

Si hace clic en cualquier lugar en el ul se disparará PERO no en la barra de desplazamiento. El mismo problema existe en todos los navegadores excepto en Firefox.

Si reemplaza 'mouseup' con 'mousedown' se activará la barra de desplazamiento también, en todos los navegadores.

Después de algunas pruebas más, parece que no importa si el 'ul' se agrega dinamicamente o no, el mouseup simplemente no parece reconocer la barra de desplazamiento como parte de 'ul' (excepto FF) .

Y el mismo problema si reemplaza 'ul' con 'div' y 'li' con 'p'.
<div id="dBox" class="" ><p>1</p><p>2</p><p>3</p><p>4</p><p>5</p><p>6</p><p>7</p><p>8</p><p>9</p></div>

$('#dBox').mouseup(function() {alert ('in: ');});

+0

No creo que pueda obtener IE para desencadenar el evento mouseup. ¿Que estás tratando de hacer? – InvisibleBacon

+0

@InvisibleBacon Solo quiero hacer una lista de selección emergente simple. Pero IE no devuelve falso en 'mousedown'. Así que he intentado hacer un hack: para desvincular el desenfoque en 'mousedown' y volver a unir el desenfoque en 'mouseup'. Pero descubrí que mouseup no se activará en la barra de desplazamiento en todas las cejas (excepto FF): http://stackoverflow.com/questions/4140317/does-anyone-know-if-ie-return-false – silversky

+0

Después de algunas pruebas más parece que mouseup no se activa en la barra de desplazamiento incluso si el ul y el li se colocan en el documento original. (excepto FF) – silversky

Respuesta

3

Sip. Aquí está el error accesible en Chrome: http://code.google.com/p/chromium/issues/detail?id=14204

Y en WebKit: https://bugs.webkit.org/show_bug.cgi?id=25811 y https://bugs.webkit.org/show_bug.cgi?id=40648

He aquí un condescendiente "que no lo necesita" respuesta de Microsoft: http://social.msdn.microsoft.com/Forums/en-US/netfxjscript/thread/3749b8a1-53ef-48fe-be81-b2df39d6154f/

Ese último hilo nos lleva a la posibilidad de usar onscroll como sustituto de onmouseup. Esto puede ser una solución parcial.

Cuestiones relacionadas