Проблема в том, что когда вы добавляете div, он уже станет видимым. Таким образом, вы должны скрыть это заранее. Проверьте мою Live Demo .
$("#cloud1").live("mouseenter", function() {
$('<div class="cloud1"><img src="http://mercury-consulting.theportlandco.com/wp-content/uploads/2010/10/1.png" width="470" height="400"/></div>')
.hide()
.appendTo(this)
.fadeIn('slow');
});
Альтернативным решением может быть добавление этого в таблицу стилей:
.cloud1 { display: none; }
Таким образом, при добавлении чего-либо с классом cloud1
по умолчанию оно будет скрыто, поэтому fadeIn()
будет работать как положено.
Приложение: вы также можете захотеть проверить, был ли div уже добавлен, потому что в противном случае всякий раз, когда происходит событие mouseenter, добавляется новый div.