【问题标题】:jQuery, hover active only when the fade in on page load endsjQuery,仅在页面加载淡入结束时悬停活动
【发布时间】:2010-10-08 20:47:57
【问题描述】:

我是 jQuery 的初学者!

我需要一些 div 在页面加载时淡入淡出,我可以做到。 我需要让它们以不同的延迟和时间显示,我可以做到。 当您将鼠标悬停在相对 div 时,每个 div 都有一个会淡入的图像,我可以做到。

问题是悬停时图像的动画,如果div的fadeIn没有结束,则仍然开始。

我希望,如果用户悬停仍然使用 fadeIn 的 div,则不会发生任何事情。 如果您将鼠标悬停在完全显示的 div 上,则图像会开始淡入。

这是我的 HTML

<div id="immagine1">
<img src="images/logo_key_css.png" alt="logo_key_css" width="169" height="53"/>
</div>
<div id="immagine2">
<img src="images/logo_key_css.png" alt="logo_key_css" width="169" height="53"/>
</div>

这是我的 jQuery

$(window).load(function () {

$('#immagine1').hide();
$('#immagine1').stop().fadeIn(1000);
$('#immagine2').hide();
$('#immagine2').stop().delay(2500).fadeIn(2500);
$('div').hover(
        function(){ $(this).find('img').fadeIn(1000);
    });

     });

还有img css

img{
display:none;
}

如何在页面加载时“禁用”悬停效果直到淡入结束?

谢谢!

This is the test page

【问题讨论】:

    标签: jquery load hover fadein


    【解决方案1】:

    我相信这会满足您的需求。基本上,您需要做的是等到&lt;div&gt; 完全淡入,然后再为图像绑定悬停事件。您可以通过在callback 中为&lt;div&gt;fadeIn 执行事件绑定来实现此目的。此外,由于您只在 hoverIn 事件(而不是 hoverOut)上做某事,您可以使用 .mouseenter() 而不是 .hover()

    代码如下:

    $(function() {
        $('div img').hide();
        $('#immagine1').hide().fadeIn(5000, function() {
            $('div').mouseenter(function() {
                $(this).find('img').fadeIn('1000');
            });
        });
    });
    

    这是它的工作演示:http://jsfiddle.net/vYz3t/

    【讨论】:

      【解决方案2】:

      看,我不明白你真正的问题,但试试这个:

      $(window).load(function () {
          $('#immagine1, #immagine2').hide();
          $('#immagine1').hover(
                  function(){
                      $(this).fadeIn(1000);
                  },
                  function(){
                      $(this).fadeOut(1000);
                  }
          );
          $('#immagine2').hover(
                  function(){
                      $(this).fadeIn(1000);
                  },
                  function(){
                      $(this).fadeOut(1000);
                  }
         );
      });
      

      或者去jQuery hover docs看看

      【讨论】:

      • 感谢您的回复,但您的代码似乎根本不起作用。我已经在网上设置了一个测试页面,所以你可以看到我需要什么。如果您重新加载页面,使鼠标远离框,然后将鼠标悬停在框上,您会看到出现一个“棕色”框。如果您将鼠标停留在框位置上重新加载页面,您会看到“棕色”框在 div(黑色或白色)结束淡入之前开始显示。我希望用户只有在 div 完成淡入时才能启动悬停效果。希望现在更清晰了。
      【解决方案3】:

      我不确定您要达到什么目的,但也许您可以通过使用.queue() 将悬停动画显式放置在队列末尾来获得您想要的效果:

      $('div').hover(function() {
        $(this).queue(function() {
          $(this).find('img').fadeIn(1000);
        });
      });​
      

      淡入效果将在默认队列(“fx”)中的待处理动画完成后开始。这是a fiddle 演示这个概念;也许它会为您指明正确的方向。

      【讨论】:

      • 我认为您已经了解我需要实现的目标。您的代码也不起作用,似乎有语法错误,但我不知道为什么。这里是测试的测试页面链接tinyurl.com/32thnx7
      • 您的 tinyurl 链接指向包含您的原始代码的页面——而不是 queue() 方法。
      • 我知道,我无法让它与您的代码一起使用。无论如何谢谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2013-07-27
      • 2013-02-13
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多