2010-10-08 81 views
0

我是一個jQuery初學者!jQuery,懸停活動只有當頁面加載結束淡入淡出

我需要一些div在頁面加載時淡入淡出,我可以做到這一點。 我需要讓他們展示不同的延遲和時間,我可以做到。 當你懸停相對的div時,每個div都有一個淡入淡出的圖像,我可以做到。

問題是,懸停的圖像動畫,如果div的fadeIn沒有結束,仍然開始。

我想,如果用戶懸停div仍然與fade一起沒有任何反應。 如果您將一個完全顯示的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; 
} 

我如何 「禁用」 懸停效果,直到結束fadeIn在頁面加載?

謝謝!

This is the test page

回答

0

我相信這會做你正在尋找的東西。基本上,你需要做的是等到<div>已完全淡入,然後再綁定圖像的懸停事件。您可以通過在callback中爲<div>淡入進行事件綁定來實現此目的。此外,因爲你只是做在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/

+0

只是很高興我可以幫助:) – Ender 2010-10-08 21:41:17

0

的樣子,我不明白你的真正的問題,但試試這個:

$(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

+0

感謝您的回覆,但您的代碼似乎根本不起作用。 我在線設置了一個測試頁面,以便您可以看到我需要的內容。 如果您使用鼠標遠離箱子重新加載頁面,然後將鼠標懸停在箱子上,您會看到一個「棕色」框。 如果您在頁面位置重新加載頁面,您會看到「棕色」框在div(黑色或白色)結束淡入之前開始顯示。 我希望用戶只有在div完成淡入時才能啓動懸停效果。希望現在更清楚。 – MarcoDL 2010-10-08 21:08:38

0

一看我不知道你在做什麼試圖實現,但也許你可以通過使用.queue()明確地將懸停動畫放在隊列末尾來獲得你想要的效果:

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

淡入效果將在默認隊列(「fx」)中的掛起動畫完成後開始。這裏是a fiddle展示的概念;也許它會讓你指向正確的方向。

+0

我認爲你已經明白我需要達到什麼目的。 你的代碼也不工作,它似乎有語法錯誤,但我不明白爲什麼。 這裏是一個測試頁鏈接測試http://tinyurl.com/32thnx7 – MarcoDL 2010-10-08 21:22:41

+0

你的tinyurl鏈接指向一個頁面,你的原始代碼 - 不是隊列()方法。 – 2010-10-08 21:40:55

+0

我知道,我不能讓它與你的代碼一起工作。無論如何,謝謝:) – MarcoDL 2010-10-08 21:47:30