Esto funciona:
Código HTML:
Ver original $(function(){
//seleccionar li's que contienen ul's y aplicarles el span
var items_con_menu = $('#menu > li:has(ul)');
items_con_menu
.children('a').append('
<span class=\"masmenos\">+
</span>')
.click(function(e){
e.preventDefault();//evitar click
var elem = $(this).next('ul');//obtener submenu a desplegar
$('#menu ul:visible').not(elem).slideUp().parent().find('.masmenos').html('+');//plegar otros submenus visibles y cambiar - a +
elem.slideDown().parent().find('.masmenos').html('-');//desplegar menu actual y cambiar + por -
});
});
#menu ul{
display:none;
}
Aunque tal vez sea necesario una optimización del código. Me parece que da muchas vueltas, lo hice rápido.