У меня есть div внутри родительского div, который обычно скрыт. Когда вы наводите курсор на родительский div, тогда он будет виден. Я использую JQuery.toggle(), чтобы получить этот эффект. Проблема в том, что если вы MouseIn и MouseOut очень быстро, многократно над родителем, дочерний div многократно переключается. Есть ли способ предотвратить это, он замедляет мою страницу?
JSFIDDLE: http://jsfiddle.net/vY59g/1/
Мой JQuery:
$(document).ready(function() {
$(".result").hover(function() {
$(this).find(".result-user-facts").toggle("slow");
});
});
Если вы хотите улучшить ситуацию, просто поместите div:.result-user-Facts в переменную, если она есть. Как это:
$(function (){
var container = $(".result");
var item = container.find(".result-user-facts").eq(0);
$(".result").hover(function (){
item.stop().toggle("slow");
});
});
Это связано с тем, что анимация в очереди, каждая вставка мыши и операция оставления мыши вызывают операцию переключения. Поэтому, если есть быстрое перемещение мыши, запускающее события ввода и оставления, то даже после того, как события закончились, анимация будет продолжаться.
Решение состоит в том, чтобы остановить и очистить предыдущие анимации до вызова вызова с помощью .stop()
$(document).ready(function() {
$(".result").hover(function() {
$(this).find(".result-user-facts").stop(true, true).toggle("slow");
});
});
Демо: скрипка
Используйте .stop(true, true)
Остановите текущую анимацию на согласованных элементах.
$(document).ready(function() {
$(".result").hover(function() {
$(this).find(".result-user-facts").stop(true,true).toggle("slow");
});
});