Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/09/2010, 15:45
Avatar de hanscruz
hanscruz
 
Fecha de Ingreso: junio-2005
Mensajes: 278
Antigüedad: 18 años, 10 meses
Puntos: 0
De acuerdo hacer clickeable toda el area

Pues resulta que tengo un panel collapsable (de los que se abren y se cierran), que me funciona a la perfeccion, pero con un pequeño incoveniente.

Este es el panel tiene una barra clikeable (href que tiene el tamaño de toda la barra y dentro de este un h3 que dice "Titulo del panel"):


Cuando acerco el mouse en cualquier lugar de la barra (incluso en el h3) hace el hover perfectamente cambia el fondo, etc., miren:


Ahora cuando le doy click fuera del area de titulo h3 cierra el panel perfectamente, miren:


Pero cuando le doy click sobre el area del titulo h3 que empieza en la letra T y termina en la letra L, no pasa nada no abre ni cierra el panel, miren:


Para hacer esto uso codigo jquery vendria a ser este:

Primero el html (lo pongo resumido para que se entienda mas):
Código HTML:
Ver original
  1. <div class="panel_implementacion">
  2.                     <!-- inicio div pimplementacion_cabecera -->
  3.                     <div class="pimplementacion_cabecera">
  4.                         <a href="#" class="pimplementacion_titulo_activo" name="panel_mostrar_contenido" rel="pimplementacion"><h4>titulo del panel</h4></a>
  5.                         <div id="pimplementacion_menu">
  6.                             <a href="#" class="pimplementacion_boton" name="panel_mostrar_menu" rel="pimplementacion"  Accion="MostrableNo" Estado="inactivo"></a>
  7.                             <ul id="pimplementacion_opciones" TipoArea="mostrable">
  8.                                 <li><a href="#">configuracion</a></li>
  9.                                 <li><a href="#">editar opciones</a></li>
  10.                                 <li><a href="#">configuracion</a></li>
  11.                                 <li><a href="#">editar opciones</a></li>
  12.                                 <li><a href="#">habilitar opciones</a></li>
  13.                                 <li><a href="#">quitar preferencias</a></li>
  14.                             </ul>
  15.                         </div>
  16.                     </div>
  17.                     <!-- fin div pimplementacion_cabecera -->
  18.                     <!-- inicio div pimplementacion_cuerpo -->
  19.                     <div id="pimplementacion_cuerpo" Estado="abierto">
  20.                         <!-- inicio div pimplementacion_contenido -->
  21.                         <div id="pimplementacion_contenido">
  22.                             <ol style="list-style: decimal; padding: 10px 15px;">
  23.                                 <li>Necesita hacer esta accion</li>
  24.                                 <li>Necesita hacer esta accion</li>
  25.                                 <li>Necesita hacer esta accion</li>
  26.                                 <li>Necesita hacer esta accion</li>
  27.                                 <li>Necesita hacer esta accion</li>
  28.                                 <li>Necesita hacer esta accion</li>
  29.                                 <li>Necesita hacer esta accion</li>
  30.                                 <li>Necesita hacer esta accion</li>
  31.                                 <li>Necesita hacer esta accion</li>
  32.                                 <li>Necesita hacer esta accion</li>
  33.                                 <li>Necesita hacer esta accion</li>
  34.                                 <li>Necesita hacer esta accion</li>
  35.                                 <li>Necesita hacer esta accion</li>
  36.                                 <li>Necesita hacer esta accion</li>
  37.                             </ol>
  38.                         </div>
  39.                         <!-- fin div pimplementacion_contenido -->
  40.                         <!-- inicio div pimplementacion_pie -->
  41.                         <div id="pimplementacion_pie">
  42.                             <span><a href="#" class="enlace">saber mas</a></span>
  43.                         </div>
  44.                         <!-- fin div pimplementacion_pie -->
  45.                     </div>
  46.                     <!-- fin div pimplementacion_cuerpo -->
  47.                 </div>

este es el codigo jquery:
Código Javascript:
Ver original
  1. $('a[name="panel_mostrar_menu"]').click(function(e){
  2.         {
  3.             e.preventDefault();
  4.             var Estado=$(this).parent().next().attr('Estado');
  5.             var NombreRel=$(this).attr('rel');
  6.             if(Estado=='inactivo')
  7.             {
  8.                 $(this).removeClass().addClass(NombreRel+'_boton_activo');
  9.                 $(this).next().show();
  10.                 $(this).attr('Estado', 'activo');
  11.             }
  12.             else
  13.             {
  14.                 $(this).removeClass().addClass(NombreRel+'_boton');
  15.                 $(this).next().hide();
  16.                 $(this).attr('Estado', 'inactivo');
  17.             }
  18.         }


Despues de inverstigar un poco lleque a la conclusion logica que el evento no se dispara, por que el evento se dispara cuando se hace click sobre el enlace no sobre el h3, pero recuerdo una ves que en un tutorial vi como se podia hacer para que con jquery el area sensible al click sea el contenedor (en mi caso el enlace a href) osea el padre y anular a sus hijos(en mi caso anular a h3).

No encuentro ese tutorial por lo que recurro a esta comunidad que un monton de veces me ayudo.

Ya busque en el api de jquery pero tampoco encuentro un ejemplo de como poder hacerlo.

Si se pudera hacer de otra forma tambien vale, cualqueir idea es bienvenida.

Espero haber sido claro y que puedna ayudarme, ya que es urgente.

saludos.


Con un poco de codigo jquery pude hacer que el panel se vea o se oculte dependiendo la situacion en que se encuentre,
__________________
:policia: