2014-02-23 51 views
0

我想要一個圖像屬性源替換鼠標進入鼠標離開事件。點擊後,圖片應保持活動狀態。點擊後我需要停止鼠標事件。到目前爲止,mouseeleave點擊後仍繼續進行,切換回圖像,這裏是下面的代碼:jquery mouseenter做到這一點,mouseleave做到這一點,請點擊做到這一點,並停止mouseenter/mouseleave事件

<script> 
    jQuery('.paypal').mouseenter(function(){ 
     jQuery('.paypal').attr('src','http://url-to-my-active-image.jpg');?>'); 
    }), 
    jQuery('.paypal').mouseleave(function(){ 
     jQuery('.paypal').attr('src','http://url-to-my-inactive-image.jpg'); 
    }), 
    jQuery('.paypal').click(function(){ 
     jQuery('.paypal').css('opacity','1'); 
    }); 
</script> 

我怎樣才能做到這一點?

+0

可能重複: HTTP ://stackoverflow.com/questions/8628768/stop-mouseleave-when-clicked-on-an-object – juvian

回答

3

只要打開off的鼠標離開當你點擊:

jQuery('.paypal').click(function(){ 
    jQuery('.paypal').css('opacity','1').off('mouseleave'); 
}); 
+1

jQuery('。paypal')對於緩存似乎已經成熟,因爲它在原始示例中使用了6次。 –

+0

奇妙的是,它做到了。我不知道.off。謝謝! – mlclm

0

一個快速解決方案似乎是在點擊時添加一個類,然後檢查mouseleave上是否存在該類;如果它在那裏,什麼都不要做。

<script> 
    jQuery('.paypal').mouseenter(function(){ 
     jQuery('.paypal').attr('src','http://url-to-my-active-image.jpg');?>'); 
    }), 
    jQuery('.paypal').mouseleave(function(){ 
     if(!jQuery('.paypal').hasClass('selected')){ 
      jQuery('.paypal').attr('src','http://url-to-my-inactive-image.jpg'); 
     } 
    }), 
    jQuery('.paypal').click(function(){ 
     jQuery('.paypal').css('opacity','1').addClass('selected'); 
    }); 
</script> 

@ j08691的答案很可能是更容易維護,特別是如果你使用的是最新的jQuery(1.7或更高版本)的版本。

0

您可以通過使用off關閉click處理器內部的mouseleave處理程序:

jQuery('.paypal').click(function() { 
    jQuery('.paypal').css('opacity', '1'); 
    jQuery('.paypal').off('mouseleave'); 
});