Ваш код все еще имеет проблемы. Посмотрите на скриншот, который я сделал после того, как вы установили stop()
на своем сайте:
Воспроизведите ошибку, проводя мышью над и после активации div (например, «На основе облака») пару раз до того, как анимация показа закончится, затем просто наведите курсор мыши на «На основе облака».
То, что сказали другие (проверяя, есть ли уже слой .cloud1
), может быть интегрировано в ваше решение с синтаксисом append(function (idx,html))
(документ здесь ):
$("#cloud1").bind("mouseenter", function() {
$("#cloud1").append(function(idx, html) {
if ($(html).find('.cloud1').size() == 0) {
return '<div class="cloud1" style="display:none"><img src="http://mercury-consulting.theportlandco.com/wp-content/uploads/2010/10/1.png" width="470" height="270"/></div>';
}
}).find('.cloud1').stop().show("slide", { direction: "down" }, 1100);
});
Наконец, я использовал bind
вместо live
, потому что:
Этот метод (live ()) является разновидностью базового метода .bind () для присоединения обработчиков событий к элементам. Когда вызывается .bind (), элементы, на которые ссылается объект jQuery, привязывают обработчик; элементы, которые будут представлены позже, не , поэтому им потребуется еще один вызов .bind ().
Поскольку у вас есть только один # cloud1, а другие не представлены позже, вам не нужен live ().