2014-12-04 42 views
0

我正在做一個上下文菜單,但有一個問題,我的上下文菜單,當我右鍵單擊我希望上下文菜單停止的位置。我曾嘗試使用.stop(),但它不起作用。Jquery停止事件的上下文菜單

這是JS Fiddle

JQUERY

$(".menu").hide(); 
$(document).on("contextmenu", ".element", function (e) { 

    $(".menu").fadeIn(); 
    return false; 
}); 

$(document).mouseup(function (e) { 
    $(".menu").fadeOut(300); 
}); 



$(document).bind('mousemove', function(e){ 
    $('.menu').css({ 
     left: e.pageX + 20, 
     top: e.pageY 
    }); 
    $(".menu").stop(); 
}); 
+0

豈不是更容易使用'contextmenu'事件來設置菜單的位置和擺脫鼠標移動的?否則,當顯示菜單時,您需要解除鼠標移動綁定,並在 – charlietfl 2014-12-04 02:41:28

+0

@charlietfl完成之後再重新綁定它? – TheSmile 2014-12-04 02:45:05

回答

1

這裏有一個方法,你檢查菜單是可見的,如果它是不動它。

var $menu = $(".menu").hide(); 
    $(document).on("contextmenu", ".element", function (e) { 
     $menu.fadeIn(); 
     return false; 
    }); 

    $(document).mouseup(function (e) { 
     $menu.fadeOut(300); 
    }); 

    $(document).bind('mousemove', function (e) { 
     if ($menu.is(':visible')) { 
      return; 
     } 
     $menu.css({ 
      left: e.pageX + 20, 
      top: e.pageY 
     }); 

    }); 

DEMO

或者您可以使用contextmenu事件來設置菜單中的位置,而無需使用鼠標移動。

$(document).on("contextmenu", ".element", function (e) { 
     $menu.css({ 
      left: e.pageX + 20, 
      top: e.pageY 
     }).fadeIn(); 
     return false; 
    }); 

DEMO 2