2012-04-29 87 views
2

我想創建一個類與'彈出'它將淡入5秒,然後淡出時'左'徘徊,但只有在第一次徘徊。這是到目前爲止我的代碼...jquery show div只在第一次懸停

$(document).ready(function() { 
var i = 1; 
if (i == 1) { 
    $('.left').hover(function() { 
    $('.popup').fadeIn(1000); 
    }, 
    function() { 
     $('.popup').fadeOut(1000); 
    }); 
    i++; 
}; 
}); 
+4

用途之一。 http://api.jquery.com/one/ –

+0

@LarryBattle。你是對的,但有些人喜歡這樣做很難。閱讀下面的答案... – gdoron

+0

@gdoron,有些人喜歡知道用多種方式做某事。如果其中一個不起作用。 –

回答

3
$('.left').one('mouseenter', function() { 
    $('.popup').fadeIn(1000); 
}) 
.one('mouseleave', function() { 
    $('.popup').fadeOut(1000); 
}); 
+0

這看起來是最優雅的答案。目前它不在我的網站上工作,但是... [鏈接](http://alpha.may-ninth.co.uk/work/) – Alfazo

0

如果你想這一次應用所有。左元素,你可以使用它是這樣的。數據()屬性:

$(document).ready(function() {  
    $('.left').hover(function() { 
     if ($(this).hasData("hovered_once")==false) { 
      $('.popup').fadeIn(1000); 
      $(this).data("hovered_once")=="yes"; 
     } 
    }, 
    function() { 
     $('.popup').fadeOut(1000); 
    }); 
}); 
+1

哇。代碼太多。 「一個」可以幫你開箱(以更高效的方式)。閱讀我的答案。 – gdoron

+0

是'one'也適用於此。但我喜歡用'.data' :) –

+0

你知道處理程序一直在那裏,如果你使用'unbind' o.k.,但你的代碼根本不是最好的。 :( – gdoron

0

你可以這樣做。這裏是示例代碼。

$(document).ready(function() { 
    var i=1; 
    $('.left').on({ 
     mouseenter: function (e) { 
      if(i<2) 
      { 
       $('.popup').fadeIn(1000); 
       i++; 
      } 
     }, 
     mouseleave: function (e) { 
      $('.popup').fadeOut(1000); 
     } 
    }); 

});​ 

樣品展示

http://jsfiddle.net/mediasoftpro/ZtWru/7/