2011-12-28 69 views
0

所以我知道这是一个已经被问了很多问题,但我希望现在用jQuery来做这个更简单的方法。 我想要做的是有一个div,显示来自用户的新帖子,一次一个。套接字IO会将新数据推送到一个列表中,除了一个以外,其他所有数据都会一次隐藏。每隔x秒钟就会有一段时间更改数据。我想要做的是,当用户悬停在它上面,暂停间隔时间,以及当他们将鼠标移出时继续。悬停的jQuery延迟代码? (最简单的方法)

<ul> 
<li class="current">List #1</li> 
<li>List #2</li> 
</ul> 

回答

2

你不告诉你已经拥有的代码,但下面是一个非常通用的方式来做到这一点:

var pause = false; 

setInterval(function() { 
    if (pause) 
     return; 

    // your code to change the item here 

}, delay); 

$("selector for your element here").hover(
    function() { 
     pause = true; 
    }, 
    function() { 
     pause = false; 
    } 
); 

(也许应该都准备好上述文件。)

工作演示:http://jsfiddle.net/N2uMA/

+0

这很好,谢谢。 (我还没有在我的网站上编写这个功能,我只是在思考这个想法) – 2011-12-28 03:13:58

0

您可以用setInterval来改变图像每隔X毫秒,然后我们可以使用clearInterval停止它。

var interval = setInterval(<function>, <delay>); 

clearInterval(interval); 
1

我想要做的是,当用户将鼠标悬停它,暂停的时间间隔,而当他们的鼠标出去的简历离开的地方

如果你想让它暂停的间隔并恢复在间隔的中间(假设它是一个很大的间隔,也许是一秒或更长),那么你可以使用code from this other question, showing how to interrupt and resume an interval exactly where it was left off

所有我想要做的是有一个div显示来自用户的新帖,一次一个

从另一个问题使用代码,这里是一些代码来触发一个链名单,设置在每个项目current并逐渐把它,直到所有显示:

var currentTimer; 
var timeBetween = 500; 

function hideCurrentAndSetUpNext() 
{ 
    var current = $('ul li.current:last'); 
    current.fadeIn(); 

    var next = current.next(); 
    if(next != null) 
    { 
     next.addClass('current'); 
     currentTimer = new Timer(hideCurrentAndSetUpNext, timeBetween); 
    } 
} 

currentTimer = new Timer(hideCurrentAndSetUpNext, timeBetween); 

$('ul li').hover(
    function() { 
     currentTimer.pause(); 
    }, 
    function() { 
     currentTimer.resume(); 
    } 
); 

下面是一个小提琴演示验证码: