Foros del Web » Programando para Internet » Jquery »

funcion accordion jquery, se abra desplegado

Estas en el tema de funcion accordion jquery, se abra desplegado en el foro de Jquery en Foros del Web. Hola a todos, soy nueva en este foro asi que perdon si no me explico bien. Estoy armando una pagina y utilice a funcion de ...
  #1 (permalink)  
Antiguo 27/03/2011, 21:23
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 0
funcion accordion jquery, se abra desplegado

Hola a todos, soy nueva en este foro asi que perdon si no me explico bien.
Estoy armando una pagina y utilice a funcion de accordion de jquery.

pueden ver aqui:
http://newsmilesrl.com.ar/prueba/tratamientos.html

El problema que tengo que me estoy volviendo loca, es que desde la home, tiene que haber links que te lleven directo al tratamiento (de todos los que hay en la lista del menu de jquery) y se abra esa pagina con el tratamiento desplegado, y no todo el menu cerrado.

Espero alguien sepa como ayudarme

desde ya muchisimas gracias!!!!!
  #2 (permalink)  
Antiguo 27/03/2011, 22:06
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: funcion accordion jquery, se abra desplegado

¡La verdad no entiendo! :P ¿Qué es lo que tiene que aparecer desplegado? ¿Todos los items del acordeón? De ser así podrías incluir esta línea después de iniciar el acordeón:
Código Javascript:
Ver original
  1. $('.accordionContent').show();

Eso te desplegará todos los items. Dudo que sea lo que querés porque entonces le quita todo sentido al acordeón. Si querés desplegar algún item en particular deberías agregar clases a cada DIV con la clase accordionContent de acuerdo al contenido de cada item (implantes, blanqueamiento, etc) de forma de sólo poder hacer:

Código Javascript:
Ver original
  1. $('.blanqueamiento').show();

Podría ser también usar algun estilo inline para ese div indicando display:block;, pero estoy seguro que el script del acordeón lo sobreescribirá y no funcionará.

-edit-
Revisando tu código fuente, en el archivo javascript.js observé esta línea al último:
Código Javascript:
Ver original
  1. /********************************************************************************************************************
  2.     CLOSES ALL DIVS ON PAGE LOAD
  3.     ********************************************************************************************************************/  
  4.     $("div.accordionContent").hide();

Seguramente removiéndola haga que todos inicien abiertos.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 27/03/2011, 22:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Tema movido desde javascript
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 03/04/2011, 09:29
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: funcion accordion jquery, se abra desplegado

Cita:
Iniciado por Naahuel Ver Mensaje
¡La verdad no entiendo! :P ¿Qué es lo que tiene que aparecer desplegado? ¿Todos los items del acordeón? De ser así podrías incluir esta línea después de iniciar el acordeón:
Código Javascript:
Ver original
  1. $('.accordionContent').show();

Eso te desplegará todos los items. Dudo que sea lo que querés porque entonces le quita todo sentido al acordeón. Si querés desplegar algún item en particular deberías agregar clases a cada DIV con la clase accordionContent de acuerdo al contenido de cada item (implantes, blanqueamiento, etc) de forma de sólo poder hacer:

Código Javascript:
Ver original
  1. $('.blanqueamiento').show();

Podría ser también usar algun estilo inline para ese div indicando display:block;, pero estoy seguro que el script del acordeón lo sobreescribirá y no funcionará.

-edit-
Revisando tu código fuente, en el archivo javascript.js observé esta línea al último:
Código Javascript:
Ver original
  1. /********************************************************************************************************************
  2.     CLOSES ALL DIVS ON PAGE LOAD
  3.     ********************************************************************************************************************/  
  4.     $("div.accordionContent").hide();

Seguramente removiéndola haga que todos inicien abiertos.

muchas gracias!
igualmente creo que no es lo que necesito.

Te explico detalladamente:

entro a la web, y me encuentro con la "HOME". Alli clickeo por ejemplo, en la imagen que habla del "blanqueamiento", entonces ese link me llevara a la url, ".../tratamientos.html" .

Necesito que cuando se abra esa pagina ".../tratamientos.html", la parte de blanqueamiento del "accordion" este desplegada, y obviamente las demas queden cerradas.

es posible eso?

:)
  #5 (permalink)  
Antiguo 03/04/2011, 14:31
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: funcion accordion jquery, se abra desplegado

Cita:
Iniciado por anahilarrosa Ver Mensaje
muchas gracias!
igualmente creo que no es lo que necesito.

Te explico detalladamente:

entro a la web, y me encuentro con la "HOME". Alli clickeo por ejemplo, en la imagen que habla del "blanqueamiento", entonces ese link me llevara a la url, ".../tratamientos.html" .

Necesito que cuando se abra esa pagina ".../tratamientos.html", la parte de blanqueamiento del "accordion" este desplegada, y obviamente las demas queden cerradas.

es posible eso?

:)
Es lo segundo que te explico en mi post. Tenés que asignarle alguna clase a tu elemento que quieras mostrar, como ser "activo" o "actual" y luego agregás esto:
Código Javascript:
Ver original
  1. $('.activo').show();

Tenés que agregarlo en alguna parte luego del script del acordeón siempre dentro de:

Código Javascript:
Ver original
  1. $(function(){
  2. //agregar aca!
  3. });

No podés usar css en este caso porque por la forma que el script del acordeón funciona, los estilos de display van a ser sobreescritos.

Saludos!
__________________
nahueljose.com.ar
  #6 (permalink)  
Antiguo 03/04/2011, 18:08
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 19 años
Puntos: 87
Respuesta: funcion accordion jquery, se abra desplegado

Haz que los links especifiquen cual ha sido cliqueado, por ejemplo blanqueamiento: en vez de que la url sea esta .../tratamientos.html, tienes que colocar que el link sea asi: .../tratamientos.html?blanqueamiento y asi con todos los links; luego haces esto para mostrar el div que sea necesario mostrar.

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.  
  3.    
  4.     var url= String(window.location).split('?');
  5.     pagina_actual = url[url.length-1];
  6.  
  7. switch(pagina_actual){
  8.     case "blanqueamiento": 
  9.     $("#panel_blanqueamiento").show()
  10.     break   ;
  11.    
  12.     case "arreglo":
  13.     $("#panel_arreglo").show()
  14.     break   ;
  15. }
  16.  
  17. })

Y simplemente dependiendo de la pagina en que estes muestra el DIV que necesitas mostrar; por ejemplo si dice "blanqueamiento" simplemente que muestre el div #panel_blanqueamiento

Cita:
case "blanqueamiento":
$("#panel_blanqueamiento").show()
break ;

Última edición por InKarC; 03/04/2011 a las 18:17
  #7 (permalink)  
Antiguo 04/04/2011, 15:05
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: funcion accordion jquery, se abra desplegado

Cita:
Iniciado por InKarC Ver Mensaje
Haz que los links especifiquen cual ha sido cliqueado, por ejemplo blanqueamiento: en vez de que la url sea esta .../tratamientos.html, tienes que colocar que el link sea asi: .../tratamientos.html?blanqueamiento y asi con todos los links; luego haces esto para mostrar el div que sea necesario mostrar.

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.  
  3.    
  4.     var url= String(window.location).split('?');
  5.     pagina_actual = url[url.length-1];
  6.  
  7. switch(pagina_actual){
  8.     case "blanqueamiento": 
  9.     $("#panel_blanqueamiento").show()
  10.     break   ;
  11.    
  12.     case "arreglo":
  13.     $("#panel_arreglo").show()
  14.     break   ;
  15. }
  16.  
  17. })

Y simplemente dependiendo de la pagina en que estes muestra el DIV que necesitas mostrar; por ejemplo si dice "blanqueamiento" simplemente que muestre el div #panel_blanqueamiento


Mil gracias por las respuestas... pero todo lo que pruebo no me funciona.... quizas es porq no soy muy experta en esto :(

les paso el javascrit que tengo a ver si hay algo q me esta haciendo interferencia:


$(document).ready(function() {

$('div.accordionButton').click(function() {
$('div.accordionContent').slideUp('normal');
$(this).next().slideDown('normal');
});
$('div.accordionButton2').click(function() {
$('div.accordionContent').slideUp('normal');
$(this).next().slideDown('normal');
});
$('div.accordionButton3').click(function() {
$('div.accordionContent').slideUp('normal');
$(this).next().slideDown('normal');
});



$("div.accordionContent").hide();


});
  #8 (permalink)  
Antiguo 05/04/2011, 07:32
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: funcion accordion jquery, se abra desplegado

Yo pensé que había sido claro :P

A ver. Según ví en el código fuente (el cual es imposible de leer así nomás :P), tu estructura para el acordeón es así:

Código HTML:
Ver original
  1. <div id="wrapper">
  2.     <div id="accordionButtonX">
  3.         //boton
  4.     </div>
  5.     <div id="accordionContent">
  6.         //contenido
  7.     </div>
  8.     ...
  9. </div>

El cual se repite para cada item del acordeón. Lo que tenés que hacer es identificar el DIV con clase "accordionContent" que contiene el elemento que querés mostrar. A ese item, vamos a agregarle la clase "activo". Así:

Código HTML:
Ver original
  1. <div id="wrapper">
  2.     <div id="accordionButtonX">
  3.         //boton
  4.     </div>
  5.     <div id="accordionContent activo">
  6.         //contenido
  7.     </div>
  8.     ...
  9. </div>

Entonces a tu script (el cual se encuentra en javascript.js) lo deberías modificar de la siguiente manera:

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.  
  3.     $('div.accordionButton').click(function() {
  4.         $('div.accordionContent').slideUp('normal');   
  5.         $(this).next().slideDown('normal');
  6.     });
  7.     $('div.accordionButton2').click(function() {
  8.         $('div.accordionContent').slideUp('normal');   
  9.         $(this).next().slideDown('normal');
  10.     });
  11.     $('div.accordionButton3').click(function() {
  12.         $('div.accordionContent').slideUp('normal');   
  13.         $(this).next().slideDown('normal');
  14.     });
  15.  
  16.     $("div.accordionContent").not('.activo').hide();
  17.  
  18. });

Observá que sólo ha cambiado la última línea, usando el método .not() para que NO OCULTE el elemento con clase activo. Eso SI funciona y es extremadamente fácil de aplicar. Acá lo ves que funciona:

http://nahueljose.com.ar/newsmile/

Creo que no puede ser más fácil que eso :P
__________________
nahueljose.com.ar
  #9 (permalink)  
Antiguo 05/04/2011, 12:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 19 años
Puntos: 87
Respuesta: funcion accordion jquery, se abra desplegado

Cita:
vamos a agregarle la clase "activo"
Sospecho que esa es la parte donde tiene problemas... eso se hace desde el lado del servidor.
  #10 (permalink)  
Antiguo 06/04/2011, 20:48
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 0
De acuerdo Respuesta: funcion accordion jquery, se abra desplegado

aayyyyy mil gracias!!!!!

pero si mal no entiendo... (q puede ser :P) no es eso lo que pregunto. :(

O sea esta bien que se abra desplegado el item pero desde un link que va a estar en la home, que el usuario decide clickear e ir a ese determinado link desplegado....

o sea varia.

soy muy mala explicando? o soy muy mala entendiendo?

en fin.... muy buena onda!
  #11 (permalink)  
Antiguo 07/04/2011, 06:20
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: funcion accordion jquery, se abra desplegado

¿Entonces el problema es que es siempre la misma página a la que todas las categorías linkean?

Ya veo, entonces el lento entendiendo soy yo :P ¿Tenés posibilidades de usar PHP? Porque de ser así la respuesta de InKarC es lo que necesitás.
__________________
nahueljose.com.ar
  #12 (permalink)  
Antiguo 07/04/2011, 08:46
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: funcion accordion jquery, se abra desplegado

la mejor opción es la que posteo InKarC aunque yo le mandaria el indice de la pestaña y con eso lanzaria un click

pasa que primero deberias optimizar tu html y tu js

por ejemplo el html podrias hacerlo asi de simple


Código HTML:
Ver original
  1. <div id="contenedor">
  2.    
  3.     <h1 class="titulo">TRATAMIENTOS ODONTOLOGICOS</h1>
  4.  
  5.     <div id="accordion">
  6.  
  7.         <h2>Implantes</h2>
  8.         <div class="accordionContent">
  9.             El contenido del implantes
  10.         </div>
  11.  
  12.         <h2>Blanqueamiento</h2>
  13.         <div class="accordionContent">
  14.             El contenido del Blanqueamiento
  15.         </div>
  16.  
  17.         <h2>Ortodoncia</h2>
  18.         <div class="accordionContent">
  19.             El contenido del Ortodoncia
  20.         </div>
  21.  
  22.     </div>
  23.  
  24. </div>

y el jquery fijate que actualmente como lo tienes estas agregando lineas por cada item que agregas, con la estructura html que te propongo solo necesitas saber manejarte por ella

el jquery:
Código Javascript:
Ver original
  1. $( function(){
  2.  
  3.     //algo.com/archivo.html?clave  ('clave' debe ser un numero)
  4.     var indice = String(window.location).split('?')[1];
  5.  
  6.     //Oculto todos los contenidos del acordeon
  7.     $('.accordionContent').hide();
  8.  
  9.     //Le doy un evento a cada h2 que son los titulos de cada tratamiento
  10.     $('#accordion>h2').click(function() {
  11.         //Si activo esta definido quiere decir que hay un contenido abierto, entonces lo cierro
  12.         if ( typeof activo != 'undefined' )
  13.             activo.slideUp();
  14.  
  15.         //Guardo en activo el div accordionContent y a continuacion lo abro
  16.         activo = $(this).next();
  17.         activo.slideDown('normal');
  18.     });
  19.  
  20.     //Lanzo un click en la pestaña segun el indice que obtengo de la url
  21.     $('#accordion>h2:eq('+indice+')').click();
  22.  
  23. });

fijate que el evento click le doy a los h2, el contenido de ese item va a ser el div que le sigue, para acceder a él uso el next(), lo guardo en una variable para saber en el proximo click que debo ocultarlo

para entrar a esa seccion y que esté activa el item que quieres visualizar desde el link que presionaste en una página externa obtengo la bandera como lo propuso InKarC pero envio el índice
cada h2 tiene el evento clic entonces el primer h2 tiene índice 0, el segundo va a ser 1 asi sucesivamente

encontes extraigo el indice pasado por url y la guardo en una variable 'indice'
al final del script lo único que hago es seleccionar el h2 con dicho índice y lanzo el clic, entonces se abre esa sección

te paso todo completo para que lo pruebes

pagina externa con links de ejemplos
Código HTML:
Ver original
  1. <a href="urlAcordeon.html?0">Implantes</a>
  2. <a href="urlAcordeon.html?1">Blanqueamiento</a>
  3. <a href="urlAcordeon.html?2">Ortodoncia</a>
modifica la url por el nombre del archivo que contiene el acordeón
y prestá atención como se relaciona la url con los bloques del acordeón

url del link Implantes es urlAcordeon.html?0
el indice (posición) del h2 del bloque de la sección de Implantes en el acordeón es 0 (los índices comienzan en 0)

para Blanqueamiento va a ser 1
para Ortodoncia va a ser 2

al obtener ese indice pasado por la url utilizo eso para lanzar un click en el h2 con ese indice

pagina que contiene el acordeón
Código HTML:
Ver original
  1.     <head>
  2.         <title>Ejemplo</title>
  3.         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  4.         <script>
  5.  
  6. $( function(){
  7.  
  8.     //algo.com/archivo.html?clave  ('clave' debe ser un numero)
  9.     var indice = String(window.location).split('?')[1];
  10.  
  11.     //Oculto todos los contenidos del acordeon
  12.     $('.accordionContent').hide();
  13.  
  14.     //Le doy un evento a cada h2 que son los titulos de cada tratamiento
  15.     $('#accordion>h2').click(function() {
  16.         //Si activo esta definido quiere decir que hay un contenido abierto, entonces lo cierro
  17.         if ( typeof activo != 'undefined' )
  18.             activo.slideUp();
  19.  
  20.         //Guardo en activo el div accordionContent y a continuacion lo abro
  21.         activo = $(this).next();
  22.         activo.slideDown('normal');
  23.     });
  24.  
  25.     //Lanzo un click en la pestaña segun el indice que obtengo de la url
  26.     $('#accordion>h2:eq('+indice+')').click();
  27.  
  28. });
  29.     </script>
  30.  
  31.     <style>
  32.         #contenedor{width:300px}
  33.         .titulo{font-size:16px; background:#777777; color:#fff}
  34.         h2{font-size:14px; background:#bbbbbb; margin:0}
  35.         .accordionContent{background:#dddddd;}
  36.  
  37.     </style>
  38.  
  39. </head>
  40.  
  41. <div id="contenedor">
  42.    
  43.     <h1 class="titulo">TRATAMIENTOS ODONTOLOGICOS</h1>
  44.  
  45.     <div id="accordion">
  46.  
  47.         <h2>Implantes</h2>
  48.         <div class="accordionContent">
  49.             El contenido del implantes
  50.         </div>
  51.  
  52.         <h2>Blanqueamiento</h2>
  53.         <div class="accordionContent">
  54.             El contenido del Blanqueamiento
  55.         </div>
  56.  
  57.         <h2>Ortodoncia</h2>
  58.         <div class="accordionContent">
  59.             El contenido del Ortodoncia
  60.         </div>
  61.  
  62.     </div>
  63.  
  64. </div>
  65.  
  66.  
  67. </body>
  68. </html>

y por mas que agregues secciones al acordeón no vas a necesitar agregar cosas al jquery

espero que se entienda :P
  #13 (permalink)  
Antiguo 07/04/2011, 15:34
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 0
Sonrisa Respuesta: funcion accordion jquery, se abra desplegado

AYYYY AHORA SIIII!!!!!
Son unos grandes!!! mil gracias chicos... muy buena ondaaaa :)

Etiquetas: desplegado, javascript, links, acordeon
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 18:42.