2012-04-29 2 views
2

Я пытаюсь создать div с всплывающим окном класса, который будет исчезать в течение пяти секунд, а затем исчезнет, ​​когда «левый» зависнет, но только в первый раз зависания. Это мой код до сих пор ...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

Если вы хотите, чтобы применить все .left элементы один раз, вы можете использовать это свойство .data(), как это:

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

Вау. слишком много кода. 'one' делает это для вас из коробки (более эффективным способом). Прочтите мой ответ. – gdoron

+0

Да «один» подходит для этого тоже. Но мне нравится использовать '.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); 
     } 
    }); 

});​ 

Sample Demo

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

Смежные вопросы