Here's a DEMO.Detener la propagación de mousedown/mouseup desde un controlador de clic
tengo dos divs
, uno interno y otro externo:
<div id="outer">
<div id="inner"></div>
</div>
Con un poco de CSS para que pueda ver cuál es cuál:
#outer {
width: 250px;
height: 250px;
padding: 50px;
background: yellow;
}
#inner {
width: 250px;
height: 250px;
background: blue;
}
trato de detener la propagación de mousedown
y mouseup
eventos desde dentro de un controlador click
como lo siguiente:
$('#inner').on('click', function(e) {
e.stopPropagation();
$(this).css({'background': 'green'});
return false;
});
$('#outer').on('mousedown', function(e) {
$(this).css({'background': 'green'});
});
$('#outer').on('mouseup', function(e) {
$(this).css({'background': 'yellow'});
});
Esto no parece posible. Lo que hace el trabajo está llamando desde dentro .stopPropagation
otros mousedown
y mouseup
llamadas, como se muestra aquí (another DEMO):
$('#inner').on('mousedown', function(e) {
e.stopPropagation();
return false;
});
$('#inner').on('mouseup', function(e) {
e.stopPropagation();
return false;
});
que ya puede haber respondido a mi propia pregunta, pero no estoy seguro si mi enfoque es el mejor o más razonable. ¿Es esta la manera correcta de detener un evento que burbujea hasta mousedown
y mouseup
?
mm +1 para la refactorización de la bondad. –
¡Cuidado con los errores de ortografía - propagación! Gracias por la ayuda. – Richard
@Richard ¡Gracias - corregido! – Jeff