[help] таймаут выполнения функции

Тема в разделе "Другие языки", создана пользователем BrainSlug, 29 янв 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. BrainSlug

    BrainSlug Постоялец

    Регистр.:
    15 июн 2008
    Сообщения:
    90
    Симпатии:
    12
    Простой и короткий вопрос, но к сожалению я не нашел ответа в мануалах.
    Имеем:


    HTML:
    $(document).ready(function(){
        $(".btn").hover(
            function() {
                $("#panel2").fadeIn(300);
            },
            function() {
                $("#panel2").fadeOut(600);       
            }
        );
    	
        $("#panel2").hover(
            function() {
                $("#panel2").removeClass("panel").addClass("panelv").stop();
            },
            function() {
                $("#panel2").removeClass("panelv").addClass("panel").fadeOut("slow");
            }
        );
    });
    

    Блок который проявляется #panel2 это меню, на которое переводится курсор. Проявляется он за 300 м.сек.

    Есть баг. Если быстро провести курсором на него, то он останется полупрозрачным, смаря как быстро - проявления пройдет не полностью. И баг будет до перезагрузки страницы.

    Вопрос, как задать таймаут в строке

    $("#panel2").removeClass("panel").addClass("panelv").stop();

    на выполнение .stop()

    Тоесть, чтоб stop сработал через 300м.сек.

    Очень надо.:thenks:
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Чем не угодил стандартный JS - setTimeout?
     
  3. BrainSlug

    BrainSlug Постоялец

    Регистр.:
    15 июн 2008
    Сообщения:
    90
    Симпатии:
    12
    Но это все обрабатывает jQuery я думал у него пишется по другому..

    Если не сложно, покажите как применить setTimeout к stop();
    в
    $("#panel2").removeClass("panel").addClass("panelv ").stop();
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    setTimeout(function(){ $("#panel2").removeClass("panel").addClass("pane lv ").stop(); }, время_в_миллисекундах);
     
    BrainSlug нравится это.
  5. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Или если уж хочется все по жкеревски, то существует плагин jQuery.timer
    в нем делается так. Примеры из самого плага
    Код:
    @usage
       $.timer(interval, callback);
      
      
       @example
       $.timer(1000, function (timer) {
       	alert("hello");
       	timer.stop();
       });
       @desc Show an alert box after 1 second and stop
      
       @example
       var second = false;
      	$.timer(1000, function (timer) {
      		if (!second) {
      			alert('First time!');
      			second = true;
      			timer.reset(3000);
      		}
      		else {
      			alert('Second time');
      			timer.stop();
      		}
      	});
       @desc Show an alert box after 1 second and show another after 3 seconds
    
     
    BrainSlug нравится это.
Статус темы:
Закрыта.