La clave esta en event.stopPropagation(); (Asumo que estas usando JQuery por que probaste la anterior respuesta)
Para mostrar es normal:
Código Javascript
:
Ver original$('clase_del_li').click(function(event){
event.stopPropagation();
$('clase_del_div').show()
});
Para ocultar:
Código Javascript
:
Ver original$(document).click(function() {
$('clase_del_div').hide()
});
Aplica igual para javascript puro si es como lo estas haciendo... la idea es que cuando se le de click en el elemento que quieres que muestre lo tome como a parte del todo.. sin que haga eventBubbling y se vaya hasta el document.. por eso paras la propagación del evento, entonces así al darle click solo ejecuta su función mientras que en cualquier otra cosa de document (es decir cualquier otra cosa que no tenga la propagación "apagada") ejecutara la otra función que es cerrar