Foros del Web » Programando para Internet » Jquery »

problema creacion de plugin jquery

Estas en el tema de problema creacion de plugin jquery en el foro de Jquery en Foros del Web. bueno este es mi problema. he estado investigando y pues he creado un "plugin" jquery. lo unico que hace el plugin es agregar un div ...
  #1 (permalink)  
Antiguo 12/05/2012, 11:42
 
Fecha de Ingreso: diciembre-2011
Mensajes: 45
Antigüedad: 12 años, 4 meses
Puntos: 1
Exclamación problema creacion de plugin jquery

bueno este es mi problema. he estado investigando y pues he creado un "plugin" jquery. lo unico que hace el plugin es agregar un div con texto a un elemento (el texto puede ser cambiado en los argumentos) y agrega un evento a este elemento para esconder el padre. todo bien mientras lo ejecuto uno por uno sobre cada objeto con el div, pero cuando uso un selector que encapsule varios objetos deja de funcionar. que estoy haciendo mal?

este es el archivo
Código Javascript:
Ver original
  1. (function($){
  2.         $.fn.prueba = function(options)
  3.         {
  4.             defaults={
  5.                 texto:'texto default'                      
  6.                 };
  7.  
  8.             var options= $.extend(defaults,options);
  9.             var base=this;
  10.             var probador
  11.  
  12.             this.mostrarTexto=function(texto){
  13.                 probador=$('<div></div>');//genera el contenedor de texto
  14.                 probador.html(texto);//genera el texto en el contenedor
  15.                 base.html(probador);
  16.             }
  17.            
  18.  
  19.             this.mostrarTexto(options.texto);
  20.  
  21.             probador.click(function(){
  22.                 base.hide('slow');
  23.                 });
  24.         }
  25. })(jQuery);

este es el html

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="jquery.bxSlider.min.js"></script>
<script src="prueba.js"></script>
<script>

$(document).ready(function(){
		
	$('#div1').prueba();
	
	$('#div2').prueba({
		
		texto:'texto seteado',
		
		});
		
		/*$('.div').prueba();*/
	
});
</script>
</head>

<body>

<div id="div1" class="div" style=" width:200px; height:200px; border:1px #000 solid">
</div>

<div id="div2" class="div" style=" width:200px; height:200px; border:1px #000 solid">
</div>

</body>
</html> 
  #2 (permalink)  
Antiguo 12/05/2012, 13:08
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 2 meses
Puntos: 192
Respuesta: problema creacion de plugin jquery

Te hago un par de correcciones.

1.- Tratá siempre de usar $(this) en lugar de this. De esta forma convertís el objeto a un objeto jQuery y podés aplicarle sus métodos.

Esto no funciona:
Código Javascript:
Ver original
  1. var base=this;
  2. base.html(probador);

dado que base no es un objeto jQuery.

2.- Para que tu plugin funcione con todos los elementos que se pasa en el selector, tenés que usar .each(). De esta forma la acción se ejecuta para cada elemento.

Te paso el plugin con esas dos correcciones. Analizalo y fijate cuales son los cambios.

Código Javascript:
Ver original
  1. (function($){
  2.         $.fn.prueba = function(options)
  3.         {
  4.             defaults={
  5.                 texto:'texto default'                      
  6.                 };
  7.  
  8.             var options= $.extend(defaults,options);
  9.            $(this).each(function(){
  10.                 var base=$(this);
  11.                 var probador;
  12.      
  13.                 this.mostrarTexto = function(texto){
  14.                     probador = $('<div></div>');//genera el contenedor de texto
  15.                     probador.html(texto);//genera el texto en el contenedor
  16.                     base.html(probador);
  17.                 }
  18.                
  19.      
  20.                 this.mostrarTexto(options.texto);
  21.      
  22.                 probador.click(function(){
  23.                     base.hide('slow');
  24.                 });
  25.            });
  26.         }
  27. })(jQuery);
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 12/05/2012, 16:28
 
Fecha de Ingreso: diciembre-2011
Mensajes: 45
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: problema creacion de plugin jquery

Muchas graaaaaciaas ... funca de maravilla... ahora si a desarrollar plugins se ha dicho...

y solo por si acaso... no tienes un libro de jquery avanzado que me pases?
  #4 (permalink)  
Antiguo 12/05/2012, 16:39
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 2 meses
Puntos: 192
Respuesta: problema creacion de plugin jquery

Que bueno que lo solucionaste.

Y fui aprendiendo solo, leyendo la documentación e investigando. Hace unos meses me dí con esto:
http://tutsplus.com/course/30-days-to-learn-jquery/

Ese curso es excelente. Por lejos el mejor que hay disponible gratuitamente.
Son varias lecciones de jQuery. Cuando salió ellos te mandaban una lección por día durante un mes. El único problema es que está en inglés y si no sabés, te las ves negras :P
__________________
nahueljose.com.ar

Etiquetas: javascript, plugin
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:15.