2012-04-29 3 views
2

'팝업'클래스를 사용하여 div를 만들려고합니다. '팝업'이 5 초 동안 페이드 인하 고 '왼쪽'이 위로 향했을 때 사라지지만 처음에만 유혹.jquery 첫 번째 호버에서만 div를 표시합니다.

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

하나를 사용합니다. http://api.jquery.com/one/ –

+0

@ 래리 배틀. 당신 말이 맞지만 어떤 사람들은 어렵게하는 것을 좋아합니다. 아래 답변을 읽어보십시오 ... – gdoron

+0

@ gdoron, 어떤 사람들은 여러 가지 방법으로 무언가를하고 싶어합니다. 그 중 하나가 작동하지 않는 경우. –

답변

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

이것은 가장 우아한 답변과 같습니다. 그래도 내 사이트에서는 현재 작동하지 않습니다 ... [link] (http://alpha.may-ninth.co.uk/work/) – Alfazo

0

당신이 한 번 모든 .left 요소를 적용 할 경우 ... 지금까지 내 코드입니다 이 방법으로해라. 여기 샘플 코드입니다.

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

+1

와우. 너무 많은 코드. '하나'는 당신을 위해 상자 밖에서 (보다 효율적으로)합니다. 내 대답을 읽으십시오. – gdoron

+0

예 'one'도 적합합니다. 그러나 나는'.data'를 사용하는 것을 좋아한다. –

+0

당신이'unbind' o.k.를 사용했다면 핸들러는 거기에 머물러 있다는 것을 알고 있지만, 당신의 코드는 전혀 모범 사례가 아니다. : – gdoron

0

당신은 할 수 있습니다 이것은 당신은이 같은 .DATA() 속성의 사용,

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