如何使用jQuery区分鼠标左键和鼠标右键

如何使用jQuery得到单击的鼠标按钮? css

$('div').bind('click', function(){
    alert('clicked');
});

这是由鼠标右键和鼠标左键触发的,能捕捉鼠标右键的方式是什么? 若是如下内容存在,我将很高兴: html

$('div').bind('rightclick', function(){ 
    alert('right mouse button is pressed');
});

#1楼

$.event.special.rightclick = {
    bindType: "contextmenu",
    delegateType: "contextmenu"
};

$(document).on("rightclick", "div", function() {
    console.log("hello");
    return false;
});

http://jsfiddle.net/SRX3y/8/ jquery


#2楼

 
 
 
 
 
 
  
  
  
 
  
 
  
  
  
  
  
 
 
 

 

 
 
 
 
 
 $("#element").live('click', function(e) { if( (!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1) ) { alert("Left Button"); } else if(e.button == 2){ alert("Right Button"); } });

更新事物的当前状态: ajax

var $log = $("div.log"); $("div.target").on("mousedown", function() { $log.text("Which: " + event.which); if (event.which === 1) { $(this).removeClass("right middle").addClass("left"); } else if (event.which === 2) { $(this).removeClass("left right").addClass("middle"); } else if (event.which === 3) { $(this).removeClass("left middle").addClass("right"); } });
div.target { border: 1px solid blue; height: 100px; width: 100px; } div.target.left { background-color: #0faf3d; } div.target.right { background-color: #f093df; } div.target.middle { background-color: #00afd3; } div.log { text-align: left; color: #f00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="target"></div> <div class="log"></div>


#3楼

有不少很是好的答案,可是我只想在使用event.buttonevent.button IE9和IE <9之间的一个主要区别。 api

根据旧的Microsoft event.button规范,该代码与W3C使用的代码不一样。 W3C仅考虑3种状况: ide

  1. 单击鼠标左键event.button === 1
  2. 单击鼠标右键event.button === 3
  3. 单击鼠标中键event.button === 2

可是,在较旧的Internet Explorer中,Microsoft稍微按下了按钮,有8种状况: this

  1. 未单击任何按钮event.button === 0或000
  2. 单击左按钮event.button === 1或001
  3. 单击右键event.button === 2或010
  4. 单击左右按钮event.button === 3或011
  5. 单击中间按钮event.button === 4或100
  6. 单击中键和左键event.button === 5或101
  7. 单击中键和右键event.button === 6或110
  8. 单击全部3个按钮event.button === 7或111

尽管从理论上讲这是应该起做用的事实,可是Internet Explorer从未支持过同时按下两个或三个按钮的状况。 我之因此提到它,是由于W3C标准甚至在理论上都没法支持这一点。 google


#4楼

$(document).ready(function () {
    var resizing = false;
    var frame = $("#frame");
    var origHeightFrame = frame.height();
    var origwidthFrame = frame.width();
    var origPosYGrip = $("#frame-grip").offset().top;
    var origPosXGrip = $("#frame-grip").offset().left;
    var gripHeight = $("#frame-grip").height();
    var gripWidth = $("#frame-grip").width();

    $("#frame-grip").mouseup(function (e) {
        resizing = false;
    });

    $("#frame-grip").mousedown(function (e) {
        resizing = true;
    });
    document.onmousemove = getMousepoints;
    var mousex = 0, mousey = 0, scrollTop = 0, scrollLeft = 0;
    function getMousepoints() {
        if (resizing) {
            var MouseBtnClick = event.which;
            if (MouseBtnClick == 1) {
                scrollTop = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
                scrollLeft = document.documentElement ? document.documentElement.scrollLeft : document.body.scrollLeft;
                mousex = event.clientX + scrollLeft;
                mousey = event.clientY + scrollTop;

                frame.height(mousey);
                frame.width(mousex);
            }
            else {
                resizing = false;
            }
        }
        return true;

    }


});

#5楼

你能够很容易地分辨哪个鼠标按键被检查按下which鼠标事件的事件对象的属性: spa

/*
  1 = Left   mouse button
  2 = Centre mouse button
  3 = Right  mouse button
*/

$([selector]).mousedown(function(e) {
    if (e.which === 3) {
        /* Right mouse button was clicked! */
    }
});