2013-01-11 63 views
1

我有2个jquery的功能:功能是否可以延迟启动而不是延迟?

$(document).ready(function(){ 
     $("#title").click(function(){ 
      $("#click").delay(2700) 
        .css({opacity: 0.0, visibility: "visible"}) 
         .animate({opacity: 0.5 
         }); 
       }); 
      }); 

$(document).ready(function(){ 
    $("#click").hover(
     function() { 
      $("#card12").animate({top:'220px'},100);}, 
     function() { 
      $("#card12").animate({top:'330px'},100); 
     }); 
    }); 

这是怎么说的工作:
1.我点击(DIV ID = #title)
2.(DIV ID = #click)将显示延迟2700ms
3.无论何时我将光标指向(div id =#点击),(div id =#card12)将滑动上移

我的问题是:
1.我在2700ms(延迟(div id =#点击)出现之前意外地将光标指向了(div id =#click)区域)
2.而不是忽略它, (DIV ID =#card12)回应,一旦(DIV ID =#点击)已被完全装入

(向上滑动),例如:我点我的光标(DIV ID =#点击)区,在2700ms之前将区域外光标前后移出2次(出现前(div id =#点击)之前的延迟)。 (div id =##click12)),jQuery将滑过(div id =“#card12”)两次,(div id =#点击“已被完全加载(即使我的光标在加载时间之外(div id =#click))区域

我的问题是:
是否可以忽略在2700ms之前发生的任何事情#click延迟才显示出来)?

PS:我知道这是更容易,如果我可以使用codePen/jsFiddle执行,但我不知道如何使用codePen/jsFiddle使用2 jquery-(IES?)

非常感谢您

+0

只需将这两个函数放在jsfiddle的JS框中:http://jsfiddle.net/fmZjK/。不难;) –

+1

请在您的脚本中添加您所指的相关HTML。这样我们就可以做我们自己的jsfiddle来让我们更好地理解你的问题并提出一个解决方案。或者将所有脚本转储到jsFiddle中,然后自己添加相关的HTML并发布小提琴链接。 – Nope

回答

0

把你的jQuery悬停在回调你的第一个动画jQuery。

$(document).ready(function() { 
    $("#title").click(function() { 
    $("#click").delay(2700).css({opacity: 0.0,visibility: "visible"}).animate({ 
     opacity: 0.5}, function() { 
     $("#click").hover(function() { 
     $("#card12").animate({top: '220px'}, 100); 
     },function() { 
     $("#card12").animate({top: '330px'}, 100); 
     }); 
    }); 
    }); 
}); 
+1

太棒了!这对我来说很完美。谢谢 – dodgerblue

1

你可能需要考虑增加悬停这样的点击功能内结合:

$(document).ready(function(){ 
    $("#title").click(function(){ 
     $("#click").delay(2700) 
      .css({opacity: 0.0, visibility: "visible"}) 
      .animate({opacity: 0.5}) 
      .hover(
       function() { 
        $("#card12").animate({top:'220px'},100);}, 
       function() { 
        $("#card12").animate({top:'330px'},100); 
      }); 
     }); 
    }); 
}); 
0

如果我理解正确的,你的#点击元素的延迟之后显示出来,然后才是你希望用户能够点击它,并显示卡元件。一个简单的解决方法是使用display:none与visibility:hidden。这可能是也可能不是一个选项。能见度的好处在于你的元素保持了它的空间,但是有一些方法。如果使用display:none不是一个选项,我想通过执行以下操作可以完成你想要达到的目标。

$(document).ready(function(){ 
    $("#title").click(function(){ 
     setTimeout(function(){ 
      $("#click").css({opacity: 0.0, visibility: "visible"}).animate({opacity:0.5}); 
      $("#click").hover(
       function() { 
        $("#card12").animate({top:'220px'},100);}, 
       function() { 
        $("#card12").animate({top:'330px'},100); 
       } 
      ); 
     },2700); 
    }); 
}); 

我看不到你的代码,但假设你的#点击元素是你#title元素的孩子,我会用上面的代码,但更改#点击到$(本)。儿童()类型选择以获得正确的元素。然而,因为它看起来你是使用ID作为选择器而不是类,我假设只有一个页面上的每个元素,并使用ID作为选择器应该罚款。 基本上我的代码在2700毫秒后分配悬停事件侦听器,这是setTimeout的用途。