редактировать: оригинал ниже по историческим причинам
Я решил эту проблему, вы можете найти решение на
http://jsbin.com/hogantest/5
и, конечно, увидеть весь источник и играть с ним в http://jsbin.com/hogantest/5/edit
Поскольку stop()
не работает с fadeIn()
и fadeOut()
, при быстром перемещении указателя мыши появляются суетливые стрелки, торчащие вокруг. Я оставляю исправление для ОП.
Здесь были проблемы и решения. Проблема 1 не использовала останов правильно. Вы только хотите использовать стоп на исчезающем элементе. Это остановит затухание и сразу же начнет затухать. Также (как мой оригинальный комментарий) вы хотите сначала остановиться, а затем выполнить работу.
Проблема 2 заключалась в динамическом добавлении изображений при наведении курсора. YIKES! Добавьте изображения в скрытые один раз и только один раз, затем манипулируйте ими.
Вот соответствующая часть пересмотренного кода:
$(document).ready(function() {
$(".fade").each( function() {
$(this).append($("<img style='float:right;' src='http://cu3ed.com/jqfade/img/plus.png' />"));
$(this).find("img:last").hide();
});
$(".fade").hover(
function () {
var me = $(this);
me.find("img:last").fadeIn(500);
me.animate({
opacity: 1,
borderBottomColor: "#6BD8FF",
borderLeftColor: "#6BD8FF",
borderRightColor: "#6BD8FF",
borderTopColor: "#6BD8FF",
color: "#03A5DF",
backgroundColor: "#E3F8FF"
}, 500);
},
function () {
var me = $(this);
me.stop();
me.find("img:last").fadeOut(200);
me.animate({
opacity: 1,
borderBottomColor: "#CCCCCC",
borderLeftColor: "#CCCCCC",
borderRightColor: "#CCCCCC",
borderTopColor: "#CCCCCC",
color: "#BBBBBB",
backgroundColor: "#F9F9F9"
}, 200);
}
);
});
Как я уже сказал, есть еще исправление - избавьтесь от fadeIn()
и fadeOut()
и используйте animate, чтобы вы могли позвонить stop()
. Я также добавил бы тег img к исходному html-коду, нет причин добавлять его динамически, если только это не сценарий обезжиривания или что-то в этом роде.
оригинальный ответ
Это предположение, уже поздно, поэтому я не проверяю его ... передвиньте стоп () до того, как изображение исчезнет.
function () {
var me = $(this);
me.stop();
me.fadeIn(500).append($("<img class='plus' src='img/plus.png' />"));
me.animate({
opacity: 1,
borderBottomColor: "#6BD8FF",
borderLeftColor: "#6BD8FF",
borderRightColor: "#6BD8FF",
borderTopColor: "#6BD8FF",
color: "#03A5DF",
backgroundColor: "#E3F8FF"
}, 500);
},