在悬停时添加暂停到jQuery

时间:2013-10-07 09:08:53

标签: javascript jquery css

有人可以协助我尝试使用此示例暂停悬停。基本上我需要它来做以下事情。

  • 暂停区间悬停
  • 突出显示项目悬停在
  • on hover out resume rotate

代码(fiddle demo):

var $f = $('ul').find('.frame');
function recursive(i) {
    $f.removeClass('showing').eq(i).addClass('showing');
    setTimeout(function () {
        recursive(++i % $f.length)
    }, 1000);
}
recursive(0);

3 个答案:

答案 0 :(得分:2)

Working DEMO

您可能需要稍微调整一下以符合您的要求。基本上,这个想法是清除鼠标上的间隔并在mouseout&amp ;;保持对计数的引用。

var $f = $('ul').find('.frame'),
    timeOut, 
    count; 

function recursive(i) {
    count = i;
    $f.removeClass('showing').eq(i).addClass('showing');
    timeOut = setTimeout(function () {
        recursive(++i % $f.length)
    }, 1000);
}

$('ul li').hover(function(){
    clearTimeout(timeOut);
});

$('ul li').mouseout(function(){
    recursive(count);
});


recursive(0);

答案 1 :(得分:1)

添加此

$(".frame").hover(function () {
    clearTimeout(t);
    console.log(this);
    $(this).addClass("showing");
}, function () {
    recursive(0);
});

Fiddle

答案 2 :(得分:1)

试试这个:

var $f = $('ul').find('.frame');
$('ul li').hover(function(){
    $f.removeClass('showing');
    $(this).addClass('showing');
    clearTimeout(timer);
}, function(){
    recursive($(this).index());
});

function recursive(i) {
    $f.removeClass('showing').eq(i).addClass('showing');
    timer = setTimeout(function () {
        recursive(++i % $f.length)
    }, 1000);
}

recursive(0);

demo