2014-10-20 5 views
-1

Я хотел бы добавить пользовательский класс для мыши. Так что, когда мышь зависает над .leftbar, добавляется класс, и его нужно всплывать (я устанавливаю для него css). Как добавить slow или временную задержку для всплывающего окна?Как добавить временную задержку

<script> 
$(document).ready(function(){ 
$(".leftbar").mouseenter(function() { 
$("body").addClass("myclass"); 
}); 
}); 

$(document).ready(function(){ 
$(".leftbar").mouseleave(function() { 
$("body").removeClass("myclass1"); 
}); 
}); 
</script> 

Я попытался this- $("body").addClass("myclass" , '300'); без везения

Спасибо!

+1

Посмотрите http://stackoverflow.com/questions/2510115/jquery-can- i-call-delay-between-addclass-and-such – r8n5n

+0

queue - ваш друг: http://api.jquery.com/jquery.queue/ – lshettyl

ответ

0

Используйте setTimeout, будучи уверенным, чтобы очистить его, когда курсор уходит.

мелкий ошибка, но myclass != myclass1.

$(document).ready(function(){ 
    var barTimeout = 0; 
    $(".leftbar").on({ 
     mouseenter: function(){ 
      barTimeout = setTimeout(function(){ 
       $("body").addClass("myclass"); 
      }, 300); 
     }, 
     mouseleave: function(){ 
      if(typeof barTimeout !== 'undefined') clearTimeout(barTimeout); 
      $("body").removeClass("myclass"); 
     } 
    }); 
}); 

JSFiddle

+0

Спасибо большое! Это работает. Я не могу добавить эффект ослабления этого кода - http://jsfiddle.net/3ts4tb8a/. Не могли бы вы помочь? – Netizen

0

Вы могли бы взглянуть на метод JQuery UI addClass, который позволяет передать некоторые параметры анимации в нее. Посмотреть пример и документацию здесь http://api.jqueryui.com/addClass/

Для вашего использования, он должен быть столь же просто, как добавление к задержке на addClass()

Добавить ссылку на библиотеку JQuery, а затем изменить код к;

$("body").addClass("myclass", 300); 
+0

Я попробовал [это] (http://pastebin.com/7qr8yh27), но не повезло. Не могли бы вы помочь? – Netizen

+0

Добавили ли вы ссылку jQueryUI? –

+0

да, пожалуйста, взгляните на код pastebin - http://pastebin.com/7qr8yh27. Я попытался смягчить эффект. – Netizen

0

Вы можете сделать это следующим образом:

$(document).ready(function() { 
    $(".leftbar").hover(function() { 
     $(this).delay(300).queue(function(next){ 
      $(this).addClass("myclass"); 
      next(); 
     }); 
    }, function(){ 
     $(this).delay(300).queue(function(next){ 
      $(this).removeClass("myclass"); 
      next(); 
     }); 
    }); 
}); 

Проверьте это здесь: JSFiddle

+0

Можете ли вы помочь добавить эффект ослабления? Это то, что я пробовал - http://jsfiddle.net/3ts4tb8a/. – Netizen

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