Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/09/2012, 06:16
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Alguna alternativa para escribir prototypes con Objetos jQuery

Respecto a tu primera respuesta: ¿Por qué no un plugin? Es lo mejor. Si lo hacés bien, lo podés hacer muy efectivo y sobre todo, reutilizable. Además podés aplicarlo con un solo selector, en muchos elementos de la página. No es complicado para nada :)

El problema con tu script (aparentemente) es que usás el método .css() para obtener las dimensiones y propiedades del textarea. El problema de esto es que estas propiedades pueden ser (al menos para line-height) normal, inherit, etc. Acá es donde falla, si no se ha definido una hoja de estilos con valores numéricos.

Lo hice de otra forma y creo que funciona igual que el tuyo:
Código Javascript:
Ver original
  1. (function($){
  2.     $.fn.extend({
  3.         // nombre de tu plugin, y parámetros
  4.         resizeTextarea: function(parametros) {
  5.         var defaults = {
  6.             animacion: 0,    //por defecto, no animamos
  7.             offset: 5        //sumar este offset a la altura para corregir
  8.         }
  9.        
  10.         var parametros =  $.extend(defaults, parametros);
  11.          
  12.             return this.each(function() {
  13.                 //aqui hacés lo que querés con el elemento
  14.                 $elem = $(this)
  15.                 $elem.css('overflow','hidden') //para que no moleste la barra
  16.                 $elem.bind('keyup',function(){
  17.                     var $_ta = $(this);
  18.                     var i_st = $_ta.scrollTop();
  19.                     if(i_st){
  20.                         $_ta.animate({
  21.                             height: '+=' + (i_st + parametros.offset)
  22.                         },parametros.animacion);
  23.                     }
  24.                 });
  25.             });
  26.         }
  27.     });
  28. })(jQuery);​

Fijate que le aplico overflow:hidden. Esto es para que la barra desplazadora no "flashee" y moleste. Queda más elegante. Además, el plugin hacepta un valor de animación por si querés hacer la transición con un efectito. Creo que este nuevo método es mejor porque no depende de los valores de CSS.

Ejemplo: http://jsfiddle.net/WZ6FY/1/
__________________
nahueljose.com.ar