বাম এবং ডান মাউসের ক্লিকের মধ্যে কীভাবে পারফরম্যান্স করবেন jQuery এর সাথে


574

আপনি কীভাবে jQuery ব্যবহার করে ক্লিক করা মাউস বোতামটি পাবেন?

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

এটি ডান এবং বাম উভয় ক্লিক দ্বারা ট্রিগার করা হয়, ডান মাউস ক্লিক ধরতে সক্ষম হওয়ার উপায় কী? নীচের মতো কিছু উপস্থিত থাকলে আমি খুশি হব:

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

উত্তর:


900

JQuery সংস্করণ 1.1.3 হিসাবে, event.whichস্বাভাবিক করে তোলে event.keyCodeএবং event.charCodeতাই আপনাকে ব্রাউজারের সামঞ্জস্যতার সমস্যাগুলি নিয়ে চিন্তা করতে হবে না। ডকুমেন্টেশন চালু আছেevent.which

event.which বাম, মাঝারি এবং ডান মাউস বোতামগুলির জন্য যথাক্রমে 1, 2 বা 3 দেবে:

$('#element').mousedown(function(event) {
    switch (event.which) {
        case 1:
            alert('Left Mouse button pressed.');
            break;
        case 2:
            alert('Middle Mouse button pressed.');
            break;
        case 3:
            alert('Right Mouse button pressed.');
            break;
        default:
            alert('You have a strange Mouse!');
    }
});

4
@ জেফ হাইনস - আমি ক্রোমে একটি ডান ক্লিক সনাক্ত করার চেষ্টা করছিলাম এবং এখানে প্রদর্শিত বাস্তবায়ন ঠিকঠাকভাবে কাজ করেছে বলে মনে হয়েছিল, তবে আমি বুঝতে পেরেছি যে কেবল সতর্কতা () প্রসঙ্গ মেনুটি উপস্থিত হতে বাধা দিয়েছে। :( বু
জিঙ্গলেস্টুলা

15
নিচে স্ক্রোল করে রাখুন এবং @ জেফহাইনস এর উত্তরটি পড়তে ভুলবেন না । মূলত, jQuery এর অন্তর্নির্মিত ইভেন্টটিকে 'প্রসঙ্গমেনু' বলে।
jpadvo

8
@ jpadvo jQuery এটিকে "প্রসঙ্গতা" হিসাবে তৈরি করেনি contextmenu, এটি ব্রাউজারের স্থানীয় native নেটিভ জাভাস্ক্রিপ্টে আপনি oncontextmenuইভেন্টটি সংযুক্ত করতে পারেন ।
নাফতালি ওরফে নিল

6
ie8: সম্পত্তি 'যা' এর মূল্য পেতে অক্ষম: অবজেক্ট নাল বা অপরিজ্ঞাত
সাইমন

2
আমি ঘটনাটি সরিয়ে দেওয়ার পরে প্রসঙ্গ মেনুটি আসতে বাধা দিতে পারি?
kmoney12

251

সম্পাদনা করুন : আমি এটিকে .on()jQuery 1.7 বা ততোধিক সময়ে গতিশীল যুক্ত উপাদানগুলির জন্য কাজ করতে পরিবর্তন করেছি :

$(document).on("contextmenu", ".element", function(e){
   alert('Context Menu event has fired!');
   return false;
});

ডেমো: jsfiddle.net/Kn9s7/5

[মূল পোস্টের শুরু] এটি আমার পক্ষে কাজ করেছে:

$('.element').bind("contextmenu",function(e){
   alert('Context Menu event has fired!');
   return false;
}); 

যদি আপনি একাধিক সমাধানে থাকেন ^^

সম্পাদনা : টিম ডাউন একটি ভাল পয়েন্টটি এনেছে যে ঘটনাটি সর্বদা right-clickআগুন জ্বলে ওঠে না contextmenu, তবে প্রসঙ্গ মেনু কী টিপানো হয় (যা তর্কসাপেক্ষে এটির জন্য প্রতিস্থাপন right-click)


28
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এই ইভেন্টটি সমস্ত প্রাসঙ্গিক ব্রাউজারগুলিতে কাজ করে এবং পুরো ক্লিকে ট্রিগার করে (নিকটে মাউস ডাউন + মাউস আপ)।
নিক retallack

3
এটিই একমাত্র সমাধান যা আমার জন্য <
টেক্সটেকের

17
যদিও প্রসঙ্গ মেনু ট্রিগার করার জন্য ডান-ক্লিক করা একমাত্র উপায় নয়।
টিম ডাউন

3
আমি মনে করি এটির ভুল পদ্ধতির কারণ contextmenuঘটনা গুলি চালানো সবসময় বোঝায় না যে মাউসের ডান বোতামটি ক্লিক করা হয়েছিল। সঠিক পন্থাটি হ'ল মাউস ইভেন্টের বোতামের তথ্য ( clickএই ক্ষেত্রে)।
টিম ডাউন

1
হে! ধন্যবাদ, এটি দুর্দান্ত দেখাচ্ছে, তবে আমি এটি টেবিল সারি বা এমনকি শরীরের মতো কোনও উপাদানকে আবদ্ধ করতে পারি না। এটি $ (উইন্ডো) দিয়ে কাজ করে। আমি ব্যাকবোন.জেএস ব্যবহার করছি এমন একটি ক্ষেত্রকে নতুন মেইন ইত্যাদির সাথে # মেইনকে জনবহুল করতে
হ্যারি

84

whichমাউস ইভেন্টগুলিতে ইভেন্ট অবজেক্টের সম্পত্তি পরীক্ষা করে আপনি সহজেই বলতে পারবেন কোন মাউস বোতামটি চাপানো হয়েছিল :

/*
  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! */
    }
});

3
উপরে লিঙ্কযুক্ত jQuery প্লাগইন e.button==2পরিবর্তে ব্যবহার করছে ।
ceejayoz

6
হাঁ। বোতামগুলির জন্য পরিবর্তিত নম্বরগুলির event.buttonচেয়ে ক্রস ব্রাউজার ব্যবহার করা সমস্যা বেশি more ২০০৯ সালের জানুয়ারী থেকে এই নিবন্ধটি একবার দেখুন - unixpapa.com/js/mouse.htmlevent.whichevent.button
রাশ ক্যাম

1
mouseupকোনও ব্যক্তিকে সত্যই আইটেম ক্লিক করেছে তা যাচাই করা কি ভাল হবে না ? অনেক সময় আছে যদি আমি ঘটনাক্রমে এমন কিছু ক্লিক করি যা আমি মাউস বোতামটি ধরে রেখে উপাদানটির বাইরে টেনে ক্লিক ক্লিক করতে পারি।
ক্রিস মেরিসিক

1
@ ক্রিসমারিসিক mouseupসম্ভবত একটি ভাল ইভেন্ট, এটি event.whichমাউস বোতাম ক্লিকের জন্য ব্যবহারের উদাহরণ মাত্র
রাশ ক্যাম

39

আপনি এবং এছাড়াও bindকরতে পারেন :contextmenureturn false

$('selector').bind('contextmenu', function(e){
    e.preventDefault();
    //code
    return false;
});

ডেমো: http://jsfiddle.net/maniator/WS9S2/

অথবা আপনি একটি দ্রুত প্লাগইন তৈরি করতে পারেন যা একই কাজ করে:

(function( $ ) {
  $.fn.rightClick = function(method) {

    $(this).bind('contextmenu rightclick', function(e){
        e.preventDefault();
        method();
        return false;
    });

  };
})( jQuery );

ডেমো: http://jsfiddle.net/maniator/WS9S2/2/


.on(...)JQuery> = 1.7 ব্যবহার করে :

$(document).on("contextmenu", "selector", function(e){
    e.preventDefault();
    //code
    return false;
});  //does not have to use `document`, it could be any container element.

ডেমো: http://jsfiddle.net/maniator/WS9S2/283/


1
@ রায়নস হ্যাঁ, তবে ডান ক্লিক ইভেন্ট পরিচালনা করার একমাত্র উপায়। যদি প্রসঙ্গ মেনুটি এখনও থাকে তবে ডান ক্লিকে আপনি কিছুই করতে পারেন নি।
নফতালি ওরফে নীল

1
@ রায়নোস - এমন অনেকগুলি ক্ষেত্রে রয়েছে যেখানে আপনার পয়েন্টটি বৈধ নয়, যেমন একটি অভ্যন্তরীণ সরঞ্জাম তৈরি করা, বা আপনার নিজের ব্যক্তিগত ব্যবহারের জন্য কোনও কোডিং..আমি নিশ্চিত যে আরও কিছু আছে
vsync

1
তাহলে আপনি আসলে এটি jQuery ইভেন্ট হ্যান্ডলার এক মত আচরণ করার জন্য (ক্লিক মত, উদাহরণস্বরূপ) চেয়েছিলেন, যে হওয়া উচিত method.call(this, e);পরিবর্তে method();এই ভাবে, methodসঠিক মূল্য পায় thisএবং সঠিকভাবে এটি পাস ঘটনা বস্তুর হয়েছে।
জেরেমি টি

@ জেরেমিটি এটি সত্য ... আপনি যে কোনও উপায়ে কলব্যাক পরিচালনা করতে পারবেন ^ _ ^
নফতালি ওরফে নীল

30

$("#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");
    }
});

জিনিসগুলির বর্তমান অবস্থার জন্য আপডেট করুন:

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>


1
এই মিশি নির্দিষ্ট? অর্থাত্ এটি অন্যান্য ব্রাউজার জুড়ে বহনযোগ্য?
তারিন পূর্ব

13
এই পদ্ধতিটি এখন অপ্রয়োজনীয় হিসাবে event.whichচালু করা হয়েছে যা ক্রস ব্রাউজারের সামঞ্জস্যতা দূর করে।
আকরান

8
আমি ইভেন্টটিকে সন্দেহ করি wh যা আসলে ক্রস ব্রাউজারের অসম্পূর্ণতা দূর করে, তবে এটি কেবল আমার।
ডিডব্লিউবি


15

এখানে খুব ভাল উত্তর রয়েছে তবে আমি ব্যবহার করার সময় আইই 9 এবং আইই 9 9 এর মধ্যে একটি প্রধান পার্থক্য স্পর্শ করতে চাই event.button

পুরাতন মাইক্রোসফ্টের event.buttonকোডগুলির জন্য উল্লেখ অনুযায়ী ডাব্লু 3 সি ব্যবহার করা কোডগুলির চেয়ে আলাদা। ডাব্লু 3 সি কেবল 3 টি মামলা বিবেচনা করে:

  1. বাম মাউস বোতাম ক্লিক করা হয় - event.button === 1
  2. মাউসের ডান বোতামটি ক্লিক করা হয় - event.button === 3
  3. মাঝের মাউস বোতামটি ক্লিক করা হয় - event.button === 2

পুরানো ইন্টারনেট এক্সপ্লোরারগুলিতে তবে মাইক্রোসফ্ট চাপা বোতামটির জন্য কিছুটা ফ্লিপ করছে এবং সেখানে 8 টি মামলা রয়েছে:

  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

এটি তাত্ত্বিকভাবে এটি কীভাবে কাজ করা উচিত তা সত্ত্বেও, কোনও ইন্টারনেট এক্সপ্লোরার এক সাথে দু'বার বা তিনটি বোতামের একসাথে চাপার ক্ষেত্রে সমর্থন করে নি। আমি এটি উল্লেখ করছি কারণ ডাব্লু 3 সি স্ট্যান্ডার্ড এমনকি তাত্ত্বিকভাবে এটি সমর্থন করতে পারে না।


6
তাই চাপা বোতামের উপর আপনি event.button === 0যা কোনও বাটন ক্লিক করা হয় তা পাবেন না, উজ্জ্বল আইইಠ_ಠ
সিনান

এটি 9 এর চেয়ে কম IE এর সংস্করণগুলিতে
কনস্টান্টিন দিনভ

যদি ডেভেলপাররা সম্মিলিতভাবে সমর্থন করা বাছাই বন্ধ করে দেয় তবে লোকেরা পরিবর্তন করতে হবে এবং তারপরে বিকাশকারীদের আর সমর্থন করার বিষয়ে চিন্তা করতে হবে না।
আহ্নবিজক্যাড

8

আমার কাছে মনে হয় যে থিওলেজআইডিয়টের উত্তরটির সামান্য অভিযোজন পরিষ্কার হবে:

$('#element').bind('click', function(e) {
  if (e.button == 2) {
    alert("Right click");
  }
  else {
    alert("Some other click");
  }
}

সম্পাদনা: JQuery একটি e.whichবৈশিষ্ট্য সরবরাহ করে, যথাক্রমে বাম, মাঝারি এবং ডান ক্লিকের জন্য 1, 2, 3 প্রদান করে। সুতরাং আপনি ব্যবহার করতে পারেif (e.which == 3) { alert("right click"); }

আরও দেখুন: "মিডল ক্লিক ব্যবহার করে অনক্লিক ইভেন্টটি ট্রিগার করা " এর উত্তরসমূহ


3

event.which === 1 এটি বাম ক্লিক ক্লিক করে (jQuery ব্যবহার করার সময়) নিশ্চিত করে।

তবে আপনার পরিবর্তনকারী কীগুলি সম্পর্কেও চিন্তা করা উচিত: ctrlcmdshiftalt

আপনি যদি কেবল সহজ, অবিস্মরণীয় বাম-ক্লিকগুলি ধরতে আগ্রহী হন তবে আপনি এই জাতীয় কিছু করতে পারেন:

var isSimpleClick = function (event) {
  return !(
    event.which !== 1 || // not a left click
    event.metaKey ||     // "open link in new tab" (mac)
    event.ctrlKey ||     // "open link in new tab" (windows/linux)
    event.shiftKey ||    // "open link in new window"
    event.altKey         // "save link as"
  );
};

$('a').on('click', function (event) {
  if (isSimpleClick(event)) {
    event.preventDefault();
    // do something...
  }
});

1

আপনি যদি "আরও ভাল জাভাস্ক্রিপ্ট মাউস ইভেন্টগুলি" খুঁজছেন যা এর জন্য অনুমতি দেয়

  • বাম মাউসডাউন
  • মাঝের মাউসডাউন
  • ডান মোসডাউন
  • বাম মাউসআপ
  • মাঝারি মাউসআপ
  • ডান মাউসআপ
  • বাম ক্লিক করুন
  • মাঝের ক্লিক
  • সঠিক পছন্দ
  • মাউস হুইল আপ
  • মাউস হুইল ডাউন

এই ক্রস ব্রাউজারটি দেখে নিন সাধারণ জাভাস্ক্রিপ্ট যা উপরের ইভেন্টগুলিকে ট্রিগার করে এবং মাথা ব্যথার কাজটি সরিয়ে দেয়। এটি কেবল আপনার স্ক্রিপ্টের শিরোনামে অনুলিপি করুন এবং আটকে দিন বা এটি <head>আপনার নথির একটি ফাইলে অন্তর্ভুক্ত করুন । তারপরে আপনার ইভেন্টগুলিকে আবদ্ধ করুন, নীচের পরবর্তী কোড ব্লকটি দেখুন যা ইভেন্টগুলি ক্যাপচার এবং তাদেরকে অর্পিত ফাংশনগুলিকে ফায়ার করার এক জাকারি উদাহরণ দেখায়, যদিও এটি সাধারণ জাভাস্ক্রিপ্ট বাইন্ডিংয়ের সাথেও কাজ করে।

আপনার যদি এটি কাজ করতে আগ্রহী হয়, তবে জেএসফিডালটি দেখুন: https://jsfiddle.net/BNefn/

/**
   Better Javascript Mouse Events
   Author: Casey Childers
**/
(function(){
    // use addEvent cross-browser shim: https://gist.github.com/dciccale/5394590/
    var addEvent = function(a,b,c){try{a.addEventListener(b,c,!1)}catch(d){a.attachEvent('on'+b,c)}};

    /* This function detects what mouse button was used, left, right, middle, or middle scroll either direction */
    function GetMouseButton(e) {
        e = window.event || e; // Normalize event variable

        var button = '';
        if (e.type == 'mousedown' || e.type == 'click' || e.type == 'contextmenu' || e.type == 'mouseup') {
            if (e.which == null) {
                button = (e.button < 2) ? "left" : ((e.button == 4) ? "middle" : "right");
            } else {
                button = (e.which < 2) ? "left" : ((e.which == 2) ? "middle" : "right");
            }
        } else {
            var direction = e.detail ? e.detail * (-120) : e.wheelDelta;
            switch (direction) {
                case 120:
                case 240:
                case 360:
                    button = "up";
                break;
                case -120:
                case -240:
                case -360:
                    button = "down";
                break;
            }
        }

        var type = e.type
        if(e.type == 'contextmenu') {type = "click";}
        if(e.type == 'DOMMouseScroll') {type = "mousewheel";}

        switch(button) {
            case 'contextmenu':
            case 'left':
            case 'middle':
            case 'up':
            case 'down':
            case 'right':
                if (document.createEvent) {
                  event = new Event(type+':'+button);
                  e.target.dispatchEvent(event);
                } else {
                  event = document.createEventObject();
                  e.target.fireEvent('on'+type+':'+button, event);
                }
            break;
        }
    }

    addEvent(window, 'mousedown', GetMouseButton);
    addEvent(window, 'mouseup', GetMouseButton);
    addEvent(window, 'click', GetMouseButton);
    addEvent(window, 'contextmenu', GetMouseButton);

    /* One of FireFox's browser versions doesn't recognize mousewheel, we account for that in this line */
    var MouseWheelEvent = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel";
    addEvent(window, MouseWheelEvent, GetMouseButton);
})();

উন্নত মাউস ক্লিক ইভেন্টগুলি উদাহরণ (সরলতার জন্য jquery ব্যবহার করে, তবে উপরের ক্রস ব্রাউজারে কাজ করবে এবং একই ইভেন্টের নামগুলিকে জ্বালিয়ে দেবে, IE নামের আগে এটি ব্যবহার করবে)

<div id="Test"></div>
<script type="text/javascript">
    $('#Test').on('mouseup',function(e){$(this).append(e.type+'<br />');})
              .on('mouseup:left',function(e){$(this).append(e.type+'<br />');})
              .on('mouseup:middle',function(e){$(this).append(e.type+'<br />');})
              .on('mouseup:right',function(e){$(this).append(e.type+'<br />');})

              .on('click',function(e){$(this).append(e.type+'<br />');})
              .on('click:left',function(e){$(this).append(e.type+'<br />');})
              .on('click:middle',function(e){$(this).append(e.type+'<br />');})
              .on('click:right',function(e){$(this).append(e.type+'<br />');})

              .on('mousedown',function(e){$(this).html('').append(e.type+'<br />');})
              .on('mousedown:left',function(e){$(this).append(e.type+'<br />');})
              .on('mousedown:middle',function(e){$(this).append(e.type+'<br />');})
              .on('mousedown:right',function(e){$(this).append(e.type+'<br />');})

              .on('mousewheel',function(e){$(this).append(e.type+'<br />');})
              .on('mousewheel:up',function(e){$(this).append(e.type+'<br />');})
              .on('mousewheel:down',function(e){$(this).append(e.type+'<br />');})
              ;
</script>

এবং যারা নিখুঁত সংস্করণের প্রয়োজন তাদের জন্য ...

!function(){function e(e){e=window.event||e;var t="";if("mousedown"==e.type||"click"==e.type||"contextmenu"==e.type||"mouseup"==e.type)t=null==e.which?e.button<2?"left":4==e.button?"middle":"right":e.which<2?"left":2==e.which?"middle":"right";else{var n=e.detail?-120*e.detail:e.wheelDelta;switch(n){case 120:case 240:case 360:t="up";break;case-120:case-240:case-360:t="down"}}var c=e.type;switch("contextmenu"==e.type&&(c="click"),"DOMMouseScroll"==e.type&&(c="mousewheel"),t){case"contextmenu":case"left":case"middle":case"up":case"down":case"right":document.createEvent?(event=new Event(c+":"+t),e.target.dispatchEvent(event)):(event=document.createEventObject(),e.target.fireEvent("on"+c+":"+t,event))}}var t=function(e,t,n){try{e.addEventListener(t,n,!1)}catch(c){e.attachEvent("on"+t,n)}};t(window,"mousedown",e),t(window,"mouseup",e),t(window,"click",e),t(window,"contextmenu",e);var n=/Firefox/i.test(navigator.userAgent)?"DOMMouseScroll":"mousewheel";t(window,n,e)}();

1
$("body").on({
    click: function(){alert("left click");},
    contextmenu: function(){alert("right click");}   
});

এটি কেন কাজ করে আপনার সম্ভবত কিছু বিশদ যুক্ত করা উচিত। - আমি সম্মত হই যে এটি হয় তবে আপনি কেন N00b এর ব্যাখ্যা দিচ্ছেন না।
অ্যাডাম কোপলি

0
$(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;

    }


});

@ নিতিন.কাট্টি: - এটি মাউস পয়েন্ট এবং বাম বোতাম ক্লিকের উপর কাজ করে যদি মাউসের বাম বোতামটি স্থির করে রাখে তবে এটি পুনরায় আকার নির্ধারণ বন্ধ করে দেয়।
ব্যবহারকারী 2335866

0

Jquery সঙ্গে আপনি ব্যবহার করতে পারেন event object type

jQuery(".element").on("click contextmenu", function(e){
   if(e.type == "contextmenu") {
       alert("Right click");
   }
});

0

JQuery ছাড়া এটি করার একটি উপায় আছে!

এটা পরীক্ষা করো:

document.addEventListener("mousedown", function(evt) {
    switch(evt.buttons) {
      case 1: // left mouse
      case 2: // right mouse
      case 3: // middle mouse <- I didn't tested that, I just got a touchpad
    }
});

আমার পিসিতে মাঝের মাউসটি 4 টি মনে হয়েছিল (উবুন্টু 14.04 - ফায়ারফক্স)। আমি বিশ্বাস করি বাম এবং ডান একসাথে 3 এবং মাঝখানে 4 .. .. আরও ভাল "ক্রস ব্রাউজার", "ক্রস প্ল্যাটফর্ম" উপায় থাকতে হবে ...
পল

0
$.fn.rightclick = function(func){
    $(this).mousedown(function(event){
        if(event.button == 2) {
            var oncontextmenu = document.oncontextmenu;
            document.oncontextmenu = function(){return false;};
            setTimeout(function(){document.oncontextmenu = oncontextmenu;},300);
            func(event);
            return false;
        }
    });
};

$('.item').rightclick(function(e){ 
    alert("item");
}); 

0

যারা যারা তারা যদি বা ব্যবহার করা উচিত নয় হতাশ হয় event.whichমধ্যে ভ্যানিলা জাতীয় বা কৌণিক : এখন এটা অবচিত তাই ব্যবহার পছন্দ event.buttonsপরিবর্তে।

দ্রষ্টব্য: এই পদ্ধতিটি এবং (মাউসডাউন) ইভেন্ট সহ:

  • বাম ক্লিক প্রেস 1 জড়িত
  • ডান ক্লিক প্রেস 2 এর সাথে যুক্ত
  • স্ক্রোল বোতাম টিপ 4 এর সাথে যুক্ত

এবং (মাউসআপ) ইভেন্টটি একই সংখ্যার পরিবর্তে 0 পরিবর্তিত করবে না

সূত্র: https://developer.mozilla.org/en-US/docs/Web/API/ মাউস এভেন্ট / বাটন


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

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

1
ওহে. এই উত্তরটি মুছে ফেলার জন্য নিম্নমানের হিসাবে চিহ্নিত করা হচ্ছে। দেখে মনে হচ্ছে আপনি একটি প্রশ্নের উত্তর যোগ করেছেন যা কিছু সময় আগে উত্তর দেওয়া হয়েছিল। উত্তরের কোনও ব্যাখ্যা না থাকলে যা এই অবদানটি কীভাবে গৃহীত উত্তরের উন্নতি করে তা ব্যাখ্যা করে, আমিও মুছে ফেলতে ভোট দিতে আগ্রহী।
পপনুডলস

1
@ পোপনুডলস, এটি ঠিক আছে তবে কখনও এটি পুনরাবৃত্তি করবেন না।
ইপ ম্যান উইংচুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.