2013-11-27 2 views
-1

Если я больше всего на красном поле быстро и оставьте курсор над красным полем, он просто перестанет затухать и разрывает операцию пополам. Если я вообще не использую функцию .stop(), jquery пытается закончить оставшиеся операции (которые я навешивал и выходил из окна раньше) Кто-нибудь знает, что мне здесь делать? Благодарю..stop() ломает fadein, а желтый прямоугольник не отображается правильно

http://jsfiddle.net/dkLhC/1

$(document).ready(function(){ 
    $(".box1").mouseenter(function(){ 

    $(".box2").stop().fadeIn(); 
    }); 
    $(".box1").mouseleave(function(){ 
    $(".box2").stop().fadeOut(); 
    }); 
}); 

ответ

0

После некоторых исследований я обнаружил, что правильный ответ

true, false (для параметров clearQueue, jumpToEnd)

http://jsfiddle.net/q6d57/11/

$(document).ready(function(){ 
    $(".box1").mouseenter(function(){ 
    $('.box2').stop(true, false).fadeIn(3000); 
    }); 
    $(".box1").mouseleave(function(){ 
    $('.box2').stop(true, false).fadeOut(3000); 
    }); 
}); 
+3

Второй параметр по умолчанию - false, поэтому вы можете просто опустить его. –

3

JSFiddle

JQuery функция fadeTo() также, кажется, работает как CSS переходы, но переходы, несомненно, лучший выбор.

$(document).ready(function(){ 
    $(".box1").mouseenter(function(){ 
    $(".box2").stop().fadeTo(1000, 1); 
    }); 
    $(".box1").mouseleave(function(){ 
     $(".box2").stop().fadeTo(1000, 0); 
    }); 
}); 
+0

Не работает ли код в моем обновлении? –

+0

Не могли бы вы объяснить, что с ним не так? –

+0

Для меня эти две версии: http://jsfiddle.net/q6d57/5/ и http://jsfiddle.net/dkLhC/8/ работают по-разному. Какой браузер вы используете? –

0

Использование .finish():

DEMO

$(document).ready(function(){ 
    $(".box1").mouseenter(function(){ 
    $(".box2").finish().fadeIn(); 
    }); 
    $(".box1").mouseleave(function(){ 
    $(".box2").finish().fadeOut(); 
    }); 
}); 
+0

Ницца, это почти то же самое, что и 'stop (true, true)' – PSL

+1

@PSL. Однако это отличается тем, что .finish() также приводит к тому, что свойство CSS всех анимаций с очередями переходит к их конечным значениям «. ;) –

+0

да только что прочитал ... :) – PSL

2

Это не прямой ответ на вашу проблему, но альтернативное решение. Вместо JQuery, вы можете использовать CSS transition сделать замирание в и

.box2 
{ 
    opacity: 0; 
    transition: opacity 2s; 
} 

.box1:hover + .box2 { 
    opacity: 1; 
    transition: opacity 2s; 
} 

См JSFiddle

+1

CSS по-прежнему остается первым выбором, когда это возможно –

Смежные вопросы