【问题标题】:Creating an interval in an each loop在每个循环中创建一个间隔
【发布时间】:2012-09-27 23:35:29
【问题描述】:

我正在尝试使用 jQuery 在每个循环中设置一个间隔。我认为以下可能有效,但没有这样的运气:

menuSlide = $(this).animate({
  left: '250px'
}, 50, function() {
});

var slideIn = function() {

  $('._jsNav').each(function(){
    setTimeout(function(menuSlide) {
    }, 200);
 });
}

$('._jsStage').mouseenter(slideIn);

谁能告诉我它有什么问题?或者如果我不正确地接近它?

谢谢!

【问题讨论】:

  • 简而言之,Javascript不支持休眠功能,只支持setTimeout。在您的情况下,主循环将为您快速运行,基于 setTimeout 不要阻止主循环运行。见stackoverflow.com/questions/951021/…
  • 你想完成什么?每个._jsNav元素是否应该在鼠标进入元素后200ms动画?

标签: jquery settimeout each


【解决方案1】:

你需要那个小plugin jquery-timing 的帮助。 非常短的代码可以满足您的需求:

$('._jsStage').mouseenter(function(){
    $('._jsNav').each($).wait(200).animate({left:250},50,$);
});

就是这样!


如果你想在单个 jQuery 行中写同样的东西,插件允许写得更短:

$('._jsStage').on('mouseenter').$('._jsNav').each($).wait(200).animate({left:250},50,$);

【讨论】:

    【解决方案2】:

    看看这个链接JavaScript Timing Events和这个例子:

    setTimeout(function(){alert("Hello")},3000); // anonymous function
    

    并回答问题(你的代码):

    setTimeout(function(menuSlide) { }, 200); // anonymous function with parameter
    // menuSlide is undefined here
    

    这段代码必须如何工作?

    添加:

    据我了解,您试图创建类似 http://jsfiddle.net/hcFGv/ 的东西?

    【讨论】:

    • 嘿,谢谢你的帮助,这个例子是我想要创建的,但是红条会按顺序缩小,首先是顶部,然后是第二个,然后是第三个,它们之间的延迟非常短,以产生良好的效果。
    • @MattStarkey 对不起,我得走了,看看这个例子:jsfiddle.net/hcFGv/1
    猜你喜欢
    • 2016-04-13
    • 2012-10-16
    • 2019-05-15
    • 2021-01-05
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2011-10-22
    • 2020-03-25
    相关资源
    最近更新 更多