【问题标题】:Mouseover .animate stops prior .animateMouseover .animate 先于 .animate 停止
【发布时间】:2011-04-07 18:51:52
【问题描述】:

我有两个不同的 .animate 函数..

  1. 向下滑动文档准备好的元素。
  2. 为这些相同的元素添加鼠标悬停效果。

这里的问题是,如果您碰巧将鼠标放在文档准备好的元素滑入的区域上,它们将停在鼠标所在的位置。

我们的目标当然是让元素自行滑动而不会受到任何干扰。

http://photoshopmesta.net/sic/theTest/slide.html

另一件事.. mouseleave 似乎将元素移动到比鼠标悬停之前稍高的位置...

关于图像加载的任何想法?我将代码放入准备好的文档中加载图像文件。它尽可能快地加载图像,但我没有想到无论图像是否加载,元素仍然会滑动..当然它们在滑动动作之前没有加载.. :/

编辑:

工作示例感谢@entropo http://jsfiddle.net/PnHpk/7/ 虽然可能会导致图像在一段时间后从那里消失,所以这里的示例使用彩色背景而不是图像http://jsfiddle.net/PnHpk/8/

【问题讨论】:

  • 不相关,但在您的链接上仅供参考:GET http://photoshopmesta.net/sic/theTest/easing.js 404 (Not Found)
  • @entropo 它不会影响任何事情,因为我在那里有 jquery ui,但谢谢你告诉我。

标签: jquery jquery-animate intercept


【解决方案1】:

我把你的例子放在 jsfiddle 中:http://jsfiddle.net/entropo/PnHpk/

在此处提问时这是一个很好的做法,因为它可以帮助人们通过一个工作示例来回答您。

这是我对其工作的看法: http://jsfiddle.net/entropo/PnHpk/7/

我利用了 jQuery 1.5 的新延迟对象。
见:SO '[jquery] deferred' search

另外,这不是我所做的(我更喜欢使用 push 来制作 Promise 堆栈),但这很有帮助:Deferred promises and synchronizing jquery.animate()

【讨论】:

  • @lollero ...我刚才对它做了一些调整。看起来工作得很顺利。我的例子中也有 cmets。
  • 我希望代码是我能理解的东西,但即便如此,您的代码似乎运行良好.. :) 所以我想 deferred 可能是需要学习的东西......谢谢帮忙。
【解决方案2】:

这样做的原因是因为您在 mouseover 和 mouseout 中有一个 .stop。显然,将它们放在那里是有意义的,所以您应该做的是在 onload 动画完成后设置 mouseover 和 mouseout 事件。

另外,如果您想等到图像加载完成再播放动画,请使用图像的 .load 事件而不是文档的 .ready 事件

编辑:鼠标悬停后元素略微向上移动,因为它们最初以 10 像素的边距顶部开始,但动画在鼠标移出时将其设置为 0 像素

编辑2:

不要为该图像使用预加载器,而是使用以下内容:

$(document).ready(function()
{
    var img = document.createElement('img');

    img.onload = function()
    {
        console.log("%o finished loading", this);
        //Set mouseover/mouseout event here
    };

    img.src = 'linkit.png';
});

【讨论】:

  • 实际上.. 删除 stop 没有区别,这是我想到的第一件事,但它仍然以相同的方式.. 我如何将图像加载更改为 onload 而不是文档准备好?对..我忘了那个边距:10px;
  • 好吧,显然我必须把它拿回来..我不小心从 mouseleave 中删除了 .stop,所以.. 但无论如何,我如何实现你所说的设置 mouseover 和 mouseout 事件加载动画完成后?不管它看起来如何,我真的对 jquery 一点经验都没有..
  • 就图像加载而言..效果很好,但是..滑动的东西..我似乎无法弄清楚如何对这些功能进行分组并按顺序触发这两个组.. .(因为我看不出按顺序单独触发所有这些有什么意义)我在想的是..如果我可以将所有的sligin函数“组合”在一起,然后将鼠标悬停功能放在一起,然后使后一个函数触发在第一个之后..photoshopmesta.net/sic/theTest/slide.html 这是我尝试过的,但因为我只是在这里在黑暗中拍摄..我搞砸了代码。
  • 。至少脚本现在运行了一些......除了鼠标悬停不起作用......这意味着我什至没有关闭它:D有什么想法吗?
猜你喜欢
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
相关资源
最近更新 更多