Hace un tiempo resolví un problema para alguien que tenía wanted his textarea to grow. Realicé una función que escucha los eventos scroll
y keyup
del área y recalcula el número de filas. Quería usar el código en otro proyecto, pero hay un problema. Los textarea no se conocen Para resolver esto, estoy usando live
en lugar de bind
, por lo que las áreas futuras también estarán vinculadas.¿Cómo se vincula el evento de desplazamiento en un Live()?
Ahora me parece que el live
ejecuta mucho más lento que un bind
. Creé a simplified example on jsFiddle. El área de texto superior se comporta como yo quiero, pero los recién agregados parpadean debido a la señalización tardía (estoy usando Chrome).
¿Cómo puedo hacer que el El problema es que live
sea tan rápido como el bind
?
scroll
no se puede utilizar con una instrucción live
. ¿Hay alguna manera de habilitar scroll
para live
? ¿Hay quizás un evento jQuery que me indique que se ha agregado un nuevo TextArea, así que puedo usar un enlace para agregar el scroll
en el elemento recién creado?
Espero sus ideas.
EDITAR: Se ha cambiado el enlace al código. Se eliminó el scrollingCode. Se agregó otro botón para crear un área de texto diferente. El problema tiene que ver con 'scroll'. No dispara.
aclaración: No sabrá qué función creará el textarea. Veo parpadeo en los cuadros agregados dinámicamente en Chrome.
Para los futuros lectores:
En jQuery 1.3.x solamente el siguiente JavaScript eventos (además de eventos personalizados) podrán ser marcadas con .live():
click, dblclick, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, and mouseup
. Como de jQuery 1.4, el método .live() admite eventos personalizados, así como todos los eventos de JavaScript que burbujean. A partir de jQuery 1.4.1 incluso se enfoca y desenfoca el trabajo con live (mapeo al más apropiado, burbujeo, eventos enfocados en y focusout). A partir de jQuery 1.4.1 se puede especificar el evento de desplazamiento (asignando a mouseenter y mouseleave, que, a su vez, se asignan a mouseover y mouseout).
@Pointy Sí, eso es cierto, es por eso que estoy haciendo un área de texto que será lo suficientemente grande para que no pueda desplazarse. Solo se desplaza muy ligeramente cuando el usuario ingresa datos nuevos y se dispara antes de la tecla. Intenta eliminar el desplazamiento del ejemplo y verás que no funcionará tan bien. –
@Kees sí, lo veo después de jugar con él. Su jsFiddle cuelga mi navegador cuando intento escribir en el área de texto "estática", y funciona bien, supongo que cuando escribo un área de texto agregada. Una cosa: ¿por qué el código llama a "scrollTop (0)" en los bucles de ampliación/reducción? – Pointy
@Pointy elem.scrollTop (0); se puede quitar :-). Fue por algo que estaba intentando: P. –