Foros del Web » Programando para Internet » Jquery »

jquery: acortar código de slideToggle...

Estas en el tema de jquery: acortar código de slideToggle... en el foro de Jquery en Foros del Web. tengo el siguiente código que trabaja muy bien, trata de: son toogles, div que se alargan y encojen con un click... todo trabaja muy bien, ...
  #1 (permalink)  
Antiguo 18/09/2008, 08:28
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 17 años
Puntos: 25
Pregunta jquery: acortar código de slideToggle...

tengo el siguiente código que trabaja muy bien, trata de:

son toogles, div que se alargan y encojen con un click... todo trabaja muy bien, lo que necesito poder minimizar el código, (en caso se pueda), minimizar el script, de modo que unas cuantas lineas de código se adapten para n numeros de enlaces y divs.

me explico mejor, imaginen que necesite 15 divs desplegables, deberia agregar 15 scripts para cada uno de los divs desplegables ???, o hay un modo de ahorrar codigo?...

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>Documento sin t&iacute;tulo</title>
<script language="javascript" type="text/javascript" src="../extras/js/jquery/jquery-1.2.6.min.js.js"></script>
  <script>
  $(document).ready(function(){
    
		$("#p_uno").hide();
		$("#p_dos").hide();
		$("#p_tres").hide();

    $("#button_uno").click(function () {
      $("#p_uno").slideToggle("normal");
    });

    $("#button_dos").click(function () {
      $("#p_dos").slideToggle("normal");
    });

    $("#button_tres").click(function () {
      $("#p_tres").slideToggle("normal");
    });

  });
  </script>
  <style>
		div.toggle { background:#def3ca; margin:10px; width:600px; 
	    padding: 10px; text-align:center; cursor: hand }
		div.contenido_toggle {
		  background:#fff; margin:10px; width:600px; 
	    padding: 10px;	  
		}
  </style>

</head>

<body>
  <div class="toggle" id="button_uno">mirar unos</div>
  <div class="contenido_toggle" id="p_uno">
    <p>Internet es un conjunto descentralizado de redes de comunicación interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial. Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, EE. UU..</p>
  </div>
  <div class="toggle" id="button_dos">mirar dos</div>
  <div class="contenido_toggle" id="p_dos">
    <p>Internet es un conjunto descentralizado de redes de comunicación interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial. Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, EE. UU..</p>
  </div>
  <div class="toggle" id="button_tres">mirar tres</div>
  <div class="contenido_toggle" id="p_tres">
    <p>Internet es un conjunto descentralizado de redes de comunicación interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial. Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, EE. UU..</p>
  </div>
</body>
</html> 
espero su ayuda, muchas gracias n________n
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #2 (permalink)  
Antiguo 18/09/2008, 12:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 6 meses
Puntos: 839
Respuesta: jquery: acortar código de slideToggle...

Tal vez podrías asignar un id con un numeral consecutivo a cada div. Por ejemplo: p_1, p_2, p_3, etc.

Y para la asignación recorres todos los divs con un bucle for.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 19/09/2008, 02:33
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: jquery: acortar código de slideToggle...

Otra solución es, en lugar de usar los ids de los <div>s, seleccionar según la clase que es común.

Algo de este estilo...

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>Documento sin t&iacute;tulo</title>
<script language="javascript" type="text/javascript" src="../extras/js/jquery/jquery-1.2.6.min.js.js"></script>
  <script>
    $(document).ready(function(){
        //Escondemos todos los div con class="contenido_toggle":
        $(".contenido_toggle").hide();

        // Asignamos los eventos a todos los div con class="toggle":
        $(".toggle").click(function () {
            //El div a ocultar o mostrar es: el siguiente a este que tenga class="contenido_toggle".
            $(this).next(".contenido_toggle").slideToggle("normal");
        });
    });
  </script>
  <style>
        div.toggle {
            background:#def3ca; margin:10px; width:600px; 
            padding: 10px; text-align:center; cursor: hand
        }
        div.contenido_toggle {
            background:#fff; margin:10px; width:600px; 
            padding: 10px;	  
        }
  </style>

</head>

<body>
  <div class="toggle" id="button_uno">mirar unos</div>
  <div class="contenido_toggle" id="p_uno">
    <p>Internet es un conjunto descentralizado de redes de comunicación interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial. Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, EE. UU..</p>
  </div>
  <div class="toggle" id="button_dos">mirar dos</div>
  <div class="contenido_toggle" id="p_dos">
    <p>Internet es un conjunto descentralizado de redes de comunicación interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial. Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, EE. UU..</p>
  </div>
  <div class="toggle" id="button_tres">mirar tres</div>
  <div class="contenido_toggle" id="p_tres">
    <p>Internet es un conjunto descentralizado de redes de comunicación interconectadas, que utilizan la familia de protocolos TCP/IP, garantizando que las redes físicas heterogéneas que la componen funcionen como una red lógica única, de alcance mundial. Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, EE. UU..</p>
  </div>
</body>
</html> 
  #4 (permalink)  
Antiguo 19/09/2008, 21:45
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 17 años
Puntos: 25
Respuesta: jquery: acortar código de slideToggle...

venkman, hola, excelente, muchas gracias por la ayuda, era lo que necesitaba, muchas gracias n______n, soy nuevo en jQuery, me va agradando cada dia mas en verdad te estoy muy agradecido, jejeje, olvide que se pueden usar los .class ...
__________________
blog: hector2c.wordpress.com
email: [email protected]
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 13:01.