Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/12/2014, 03:47
Avatar de CHuLoSoY
CHuLoSoY
 
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 3 meses
Puntos: 29
Respuesta: Menu desplegable con botonera y slideToggle

Aunque las mejores soluciones serían rehacer el código como te dicen arriba, te propongo una solución simple para tu código:

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2. var activo = undefined; //guardaremos aquí el activo
  3.  
  4.     $('#boton1').click(function() {
  5.         $('#contenidomenu1').slideDown(300);
  6.                 $('#contenidomenu'+activo).slideUp(300);
  7.     });
  8.    
  9.     $('#boton2').click(function() {
  10.         $('#contenidomenu2').slideDown(300);
  11.                 $('#contenidomenu'+activo).slideUp(300);
  12.     });
  13.    
  14.     $('#boton3').click(function() {
  15.         $('#contenidomenu3').slideDown(300);
  16.                 $('#contenidomenu'+activo).slideUp(300);
  17.     });
  18.    
  19. });

De todas formas, ese código es una locura mantenerlo. Lo tendrías muchísimo más fácil si utilizaras la propiedad "rel" o algún invento parecido:

Código HTML:
Ver original
  1. <div id="botonera" style="background:transparent;display:block;width:100%;height:40px;">
  2.     <div class="boton" rel="1" style="background:yellow;display:block;width:100px;height:40px; color:white; float:left;" onclick="">Boton</div>
  3.     <div class="boton" rel="2" style="background:green;display:block;width:100px;height:40px; color:white; float:left;">Boton</div>
  4.     <div class="boton" rel="3" style="background:orange;display:block;width:100px;height:40px; color:white; float:left;">Boton</div>
  5. </div>
  6.  
  7. <div id="cuerpomenu" style="background:grey;width:100%;height:auto;">
  8.  
  9.     <div class="contenidomenu" rel="1" style="background:black;display:none;width:100%;height:300px;"></div>
  10.     <div class="contenidomenu" rel="2" style="background:blue;display:none;width:100%;height:300px;"></div>
  11.     <div class="contenidomenu" rel="3" style="background:orange;display:none;width:100%;height:300px;"></div>
  12.  
  13. </div>

ASí podrías detectar el click del botón:
Código Javascript:
Ver original
  1. var activo = undefined;
  2. $('.boton').on('click', function(e) {
  3.       e.preventDefault();
  4.       $('.contenidomenu[rel='+$(this).attr('rel')+']').slideDown(250); // $(this).attr('rel') te devuelve el atributo REL
  5.       if(activo !== undefined)  {
  6.            $('.contenidomenu[rel='+activo+']').slideUp(250); // aquí se oculta el activo
  7.       }
  8.       activo = $(this).attr('rel');
  9. });
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.