2013-01-11 234 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的用途。