Почему бы не добавить класс с именем active или visible?
$('.error').click(function (e) {
e.preventDefault();
var position = $(this).position();
$('.super')
.show()
.css({display: 'block', position: 'absolute', left: position.left + 50, top: position.top})
.addClass("active");
});
$(document).click(function() {
if($('.super').hasClass("active"))
$('.super').removeClass("active").hide();
});
Ваша ошибка была в операторе if, событие должно произойти first перед выполнением каких-либо проверок ...
РЕДАКТИРОВАТЬ:
Глядя на вашу js fiddle Я понял ошибку, которую я сделал, это должно быть e.stopPropogation, вот полный рабочий код:
$(document).click(function(e) {
if($('.super').hasClass("active"))
$('.super').hide();
});
$('.error').click(function(e) {
e.stopPropagation();
var position = $(this).position();
$('.super').fadeIn(250).css({
display: 'block',
position: 'absolute',
left: position.left + 50,
top: position.top
}).addClass("active");
});