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$(document).ready(function() {
var activo = undefined; //guardaremos aquí el activo
$('#boton1').click(function() {
$('#contenidomenu1').slideDown(300);
$('#contenidomenu'+activo).slideUp(300);
});
$('#boton2').click(function() {
$('#contenidomenu2').slideDown(300);
$('#contenidomenu'+activo).slideUp(300);
});
$('#boton3').click(function() {
$('#contenidomenu3').slideDown(300);
$('#contenidomenu'+activo).slideUp(300);
});
});
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<div id="botonera" style="background:transparent;display:block;width:100%;height:40px;"> <div class="boton" rel="1" style="background:yellow;display:block;width:100px;height:40px; color:white; float:left;" onclick="">Boton
</div> <div class="boton" rel="2" style="background:green;display:block;width:100px;height:40px; color:white; float:left;">Boton
</div> <div class="boton" rel="3" style="background:orange;display:block;width:100px;height:40px; color:white; float:left;">Boton
</div>
<div id="cuerpomenu" style="background:grey;width:100%;height:auto;">
<div class="contenidomenu" rel="1" style="background:black;display:none;width:100%;height:300px;"></div> <div class="contenidomenu" rel="2" style="background:blue;display:none;width:100%;height:300px;"></div> <div class="contenidomenu" rel="3" style="background:orange;display:none;width:100%;height:300px;"></div>
ASí podrías detectar el click del botón:
Código Javascript
:
Ver originalvar activo = undefined;
$('.boton').on('click', function(e) {
e.preventDefault();
$('.contenidomenu[rel='+$(this).attr('rel')+']').slideDown(250); // $(this).attr('rel') te devuelve el atributo REL
if(activo !== undefined) {
$('.contenidomenu[rel='+activo+']').slideUp(250); // aquí se oculta el activo
}
activo = $(this).attr('rel');
});