2014-03-30 56 views
0

我已經在我的標記以下圖片停止功能:布爾VAR不從發射

<img id="header_img" src="header_img.png"> 

很簡單。現在我有一個不通過將鼠標懸停改變圖像的src和其中一個變化取決於mouseposition的窗口圖像源兩個功能:

var trigger = true; 
if(trigger) { 
    jQuery('body').mousemove(function(evt) { 
    var window_width = jQuery(window).width(); 
     var mouse_x = evt.pageX; 
     var mouse_y = evt.pageY; 
      if (mouse_x <= window_width/3) { 
      jQuery('#header_img').attr('src', 'left.png'); 
      } 
      if (mouse_x >= window_width/3) { 
      jQuery('#header_img').attr('src', 'right.png'); 
      } 
    }); 
} 

和:

jQuery('#header_img').hover(function() { 
    trigger = false; 
    jQuery(this).attr('src','rotate.gif')}, function() { 
    trigger = true; 
    jQuery(this).attr('src','header_img.png') 
}); 

如此以來,我不如果圖像懸停,我不想再觸發.mousemove()函數,我通過將布爾值trigger設置爲false來避免它。不幸的是它不起作用。它甚至會記錄我false,但第一個功能會繼續觸發。爲什麼?

在此先感謝!

+0

'但是第一個功能不斷射擊。爲什麼?' - 因爲mousemove事件一開始只綁定一次,然後_stays_綁定。如果你不再需要它,那麼解開它。 – CBroe

回答

1

的功能已經被綁定,所以你需要或者解除綁定:

function bodyMouseMoveFunction(evt) { 
    //your function here 
} 
jQuery('body').on('mousemove', bodyMouseMoveFunction); 

jQuery('#header_img').hover(function() { 
    jQuery('body').off('mousemove'); 
    jQuery(this).attr('src','rotate.gif')}, function() { 
    jQuery('body').on('mousemove', bodyMouseMoveFunction); 
    jQuery(this).attr('src','header_img.png') 
}); 

或移動您的觸發器檢查:

jQuery('body').mousemove(function(evt) { 
    if (trigger) { 
    var window_width = jQuery(window).width(); 
    var mouse_x = evt.pageX; 
    var mouse_y = evt.pageY; 
     if (mouse_x <= window_width/3) { 
     jQuery('#header_img').attr('src', 'left.png'); 
     } 
     if (mouse_x >= window_width/3) { 
     jQuery('#header_img').attr('src', 'right.png'); 
     } 
    } 
});