2013-04-11 57 views
2

我试图让一个弹出窗口出现一次,当用户悬停在任何一个图像库(class="notice")上时触发。我试过.one(),这很有帮助,但是现在该消息对于图库中的每个图像都出现一次。我希望它只出现一次所有的图像,无论用户首先悬停在哪里。jQuery - 制作.one运行在类的任何一个元素上,而不是每个元素上运行一次?

事情我已经尝试:

  • *.first.get(index),但这些方法需要您指定只有一个形象,我想任何图像工作
  • .removeClass('.notice')mouseleave,但jQuery是在看旧的DOM,所以不起作用。

这里是我的代码:

$(document).ready(function(){ 
    $('.notice').one('mouseenter', function() { 
     $('.popup').fadeIn(1000); 
     $(this).addClass('faded'); 
    }) 
    .one('mouseleave', function() { 
     $('.popup').fadeOut(1000); 
     $(this).removeClass('faded'); 
    }); 
}); 
+0

你看到这一点:( '通知')'$一()'来代替。 '('。notice')。on()'在你的代码中? – 2013-04-11 13:10:52

+2

@ The-Val这个问题提到使用'one' http://api.jquery.com/one/ – 2013-04-11 13:16:33

+0

哦..我完全没有意识到这一点,谢谢朋友。我学到了一件新东西:) – 2013-04-11 13:20:25

回答

1

您可以自己刚刚解除绑定:

var $notice = $('.notice'); 

$notice.on('mouseenter', function() { 
    $('.popup').fadeIn(1000); 
    $(this).addClass('faded'); 

    $notice.off('mouseenter'); 
}) 
+0

+1!不过,我会避免执行两次选择器。 – jwueller 2013-04-11 13:13:09

+0

@充满公平。更新。 – 2013-04-11 13:14:16

相关问题