Проблема в том, что когда вы добавляете обработчик click
, наложения не возникает, поэтому вы добавляете обработчик в пустой набор элементов.
Чтобы исправить это, используйте метод live , чтобы привязать ваш обработчик ко всем элементам, которые соответствуют #overlay
, при каждом их создании.
Кроме того, fadeOut
не является блокирующим вызовом, поэтому он возвращается до того, как элемент заканчивает исчезать. Поэтому вы звоните remove
сразу после того, как элемент начинает исчезать.
Чтобы это исправить, используйте параметр обратного вызова fadeOut
для вызова remove
после завершения анимации.
Например:
$('#overlay').live(function() {
$(this).fadeOut("slow", function() { $(this).remove(); });
});