Функция сброса таймера не работает! - PullRequest
0 голосов
/ 13 мая 2011

Привет, ребята!

Я пытался создать простой пример кода для моего новейшего плагина jQuery, но, похоже, он не работает вообще!Может кто-нибудь сказать, где я иду не так?, Или кто-то может предоставить мне новую функцию, чтобы сделать это.Поэтому моя проблема заключается в том, что когда я наводю курсор мыши на элемент, классифицируемый trigger, другой классифицируемый элемент eg должен fadeIn();, но если пользователь убирает мышь до того, как элемент, классифицируемый eg, исчезает, он больше не должен исчезать, но это не работает вообще.Я не то, что не так?Пожалуйста, помогите мне.(Ниже моя проблема HTML и код Jquery!)


КОД HTML

<div class="trigger">MouseOverMe</div>
<div class="eg">See Me!</div>

КОД JQUERY

function timereset(a)
{
 var elem = $('.'+a);
 if(elem.data('delay')) { clearTimeout(elem.data('delay')); }
}

$(document).ready(function () {
   $('div.eg').hide();
    $('div.trigger').mouseover(function () {
        $('div.eg').delay(1000).fadeIn();
    }); 
    $('div.trigger').mouseout(function () {
       timereset('eg');
       $('div.eg').fadeOut();
    });
});

СПАСИБО ЗА ПРЕДЕЛА

Ответы [ 4 ]

2 голосов
/ 13 мая 2011

Вам не нужны эти timereset вещи, просто вызовите stop() на объекте, и предыдущий эффект остановится:

http://api.jquery.com/stop/

Обновление на основе нового комментария:

$('div.trigger').mouseout(function () {
   $('div.eg').stop().hide();
});
1 голос
/ 13 мая 2011

JQuery

$('.trigger').hover(function() {
    $('.eg').delay(1000).fadeIn();
}, function() {
    $('.eg').stop(true, true).hide();
});

Скрипка: http://jsfiddle.net/UJBjg/1

1 голос
/ 13 мая 2011
var timer = -1;
$(document).ready(function () {
   $('div.eg').hide();
    $('div.trigger').mouseover(function () {
        timer = window.setTimeout("$('div.eg').fadeIn(function() { timer = -1; });",1000);
    }); 
    $('div.trigger').mouseout(function () {
       if(timer != -1)
          window.clearTimeout(timer);

       $('div.eg').fadeOut();
    });
});
1 голос
/ 13 мая 2011

Другим вариантом было бы очистить поставленные в очередь функции, такие как:

$('div.trigger').mouseout(function () {
       $('div.eg').queue('fx', []);
       $('div.eg').fadeOut();
    });

Имейте в виду, что если fadeOut / In уже запущен с помощью stop, вы можете получить полупрозрачный элемент.

РЕДАКТИРОВАТЬ

Вот пример: http://jsfiddle.net/Qchqc/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...