2011-06-20 76 views
2

我希望每次將鼠標放在該圖標上時都會顯示一個隨機段落元素,並在鼠標離開時再次隱藏。在懸停上顯示一個隨機元素,Jquery

下面是段落的HTML和標識:

<div> 
<p class="quote" >ryan is a champion at indesign</p> 
<p class="quote">ryan is not a champion at javascript</p> 
<p class="quote">ryan likes ramen</p> 
</div> 

<a href="#"><img id="logo" src="../_blog/_assets/_logo_icons/_logo.png" alt="logo" /></a> 

這個腳本是迄今爲止的滿足此我發現的最接近:

$('p.quote').hide(); 

var quotes = $('p.quote'); 
var rand = Math.floor(Math.random() * quotes.length); 

$('#logo').hover(function(){ 
    quotes.eq(rand).toggle(); 

    }); 

可惜,這只是顯示了同樣的報價每次除非我刷新頁面。還有其他建議嗎?

感謝 瑞安

回答

2

移動開始var rand進入懸停功能,而不是外面的線。

然後改變:

quotes.eq(rand).toggle(); 

要:

quotes.hide().eq(rand).show(); 

您還需要修改.hover(),以便它隱藏了報價,當他們停止徘徊。

下面是完整的代碼:

var quotes = $('p.quote'); 

$('#logo').hover(
    function() { 
    var rand = Math.floor(Math.random() * quotes.length); 
    quotes.hide().eq(rand).show(); 
    }, 
    function() { 
    quotes.hide() 
    } 
); 
+0

如果我將var rand移動到函數中那麼有時會彈出多個報價,並且當我的鼠標離開時不會再次隱藏。 – Ryan

+0

@Ryan對不起,我正在編輯中,現在已經有了完整的答案。 – Ariel

+0

好的,這似乎運作良好。我寫了一些有點不同的內容來隱藏引用,但是你的腳本更好一些。 下面是完整的腳本: $('p.quote')。hide(); \t \t \t \t \t \t \t \t \t 變種報價= $( 'p.quote'); 。 \t \t \t \t \t \t \t \t $( '#標誌')鼠標懸停(函數(){ \t變種蘭特= Math.floor(的Math.random()* quotes.length); quotes.hide( ).EQ(RAND).show(); \t \t \t \t \t \t \t \t \t \t }); $('#logo')。mouseleave(function(){ \t quotes。隱藏(); }); \t \t \t }); – Ryan

1

移動var rand = Math.floor(Math.random() * quotes.length);您懸停處理程序中,像這樣:

$('#logo').hover(function(){ 
    var rand = Math.floor(Math.random() * quotes.length); 
    quotes.eq(rand).toggle(); 

    }); 

通過這種方式,它會更新蘭特每次