javascript - img - title label html
¿Por qué no delegar trabajo para desplazamiento? (3)
Estoy tratando de usar jquery delegate para enlazar para desplazar eventos.
html
<div id=''parent''>
<div id=''child''>Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah Blah </div>
</div>
css
#parent {
width:200px;
height:200px;
border:2px solid black;
overflow:auto;
}
#child {
width:300px;
height:300px;
background:red;
}
javascript
$(''#parent'').delegate(''#child'', ''scroll'', function(){
alert(this)
})
jsfiddle
¿Por qué no funciona?
¿Por qué no delegar trabajo para desplazamiento?
Porque el evento scroll no se desplaza por el DOM.
Pero , en los navegadores modernos (IE> 8), puede capturar eventos de desplazamiento , por ejemplo, a nivel de documento o cualquier contenedor estático para elementos dinámicos. useCapture
usar el método addEventListener()
javascript que pasa true
como parámetro useCapture
, jQuery no admite la fase de captura:
Nota: en su ejemplo, el evento de scroll
ocurre en el nivel de #parent
, no en #child
document.addEventListener(''scroll'', function (event) {
if (event.target.id === ''parent'') { // or any other filtering condition
console.log(''scrolling'', event.target);
}
}, true /*Capture event*/);
-MANIFESTACIÓN-
Para obtener una explicación sobre la diferencia entre la captura / propagación de eventos, consulte here o there .
Tenga en cuenta que un evento capturado siempre se activa antes que cualquier otro evento de propagación del mismo tipo.
Porque el evento de desplazamiento no burbujea. http://www.quirksmode.org/dom/events/scroll.html
creo que esto puede atar tu pergamino
$(''#child'').live(''keyup'', function() {
var el = $(this);
if (!el.data("has-scroll")) {
el.data("has-scroll", true);
el.scroll(function(){
//doscrollaction(el);
});
}
doscrollaction(el);
});
según lo solicitado por op:
cambio el css, por lo que el niño se desborda y uso jquery.scroll y funciona, sin embargo, no hay un evento de ''scroll'' como el que tiene para jquery, no sé que de todos modos, de ahí la razón por la cual bin, live, etc. no se puede configurar para scroll y también por qué tu deligate no funcionará