有幾件事情在這裏做查找。首先,形式上的,你應該將你的CSS改變的if
塊內,因爲你真的不需要這些運行每用戶移動他們的鼠標時,你顯示彈出之前右:
if(e.pageY <= 5)
{
// Alter CSS as appropriate
jQuery('#exitpopup').css('left', (window.innerWidth/2 - jQuery('#exitpopup').width()/2));
jQuery('#exitpopup').css('top', (window.innerHeight/2 - jQuery('#exitpopup').height()/2));
// Show the exit popup
jQuery('#exitpopup_bg').fadeIn();
jQuery('#exitpopup').fadeIn();
}
其次,您可能希望通過分離事件處理程序來避免再次顯示它。我建議您使用jQuery .on()
和.off()
語法,而不是簡寫.mousemove()
,因爲它更易於閱讀和維護。我還建議你在你的事件中使用命名空間,這樣你就可以確保你不會分離可能在其他腳本中設置的事件。
jQuery(document).on('mousemove.yourNamespace', function (e) {
if(e.pageY <= 5)
{
// Alter CSS as appropriate
jQuery('#exitpopup').css('left', (window.innerWidth/2 - jQuery('#exitpopup').width()/2));
jQuery('#exitpopup').css('top', (window.innerHeight/2 - jQuery('#exitpopup').height()/2));
// Show the exit popup
jQuery('#exitpopup_bg').fadeIn();
jQuery('#exitpopup').fadeIn();
// now detach the event handler so it won't fire again
jQuery(document).off('mousemove.yourNamespace');
}
}
最後,如果您包裝所有這些代碼在,你會不會寫出來,jQuery
每一次,你仍然不會有全局命名空間與$
擔心可能發生的衝突。
(function ($) {
$(document).on('mousemove.yourNamespace', function (e) {
if(e.pageY <= 5)
{
// Alter CSS as appropriate
$('#exitpopup').css('left', (window.innerWidth/2 - $('#exitpopup').width()/2));
$('#exitpopup').css('top', (window.innerHeight/2 - $('#exitpopup').height()/2));
// Show the exit popup
$('#exitpopup_bg').fadeIn();
$('#exitpopup').fadeIn();
// now detach the event handler so it won't fire again
$(document).off('mousemove.yourNamespace');
}
}
})(jQuery);
jQuery的文檔爲.on(),.off(),並event.namespace供參考。
來源
2014-07-11 16:42:30
Ben
設置指示是否彈出以前還是沒有被證明的標誌。或在彈出窗口顯示後解除綁定事件處理程序。 –