@aristarhandrianov

Как реализовать jquery on rightclick?

Как реализовать событие on right click?
При событии click все работает
$('body').on('click', '.ed', function (){

}

А вот так нет(
$('body').on('rightClick', '.ed', function (){

}

Испльзую
(function(fn) {
			var $$ = $(document);
			var mousedown = 'mousedown', mouseup = 'mouseup';
		 
			function noMenu() { return false; }
		 
			function handler(callback) {
				return function(e) {
					if (e.which === 3) { callback.call(this, e); }
					if (e.type === mousedown) { $$.one('contextmenu', noMenu); }
				};
			};
		 
			fn.rightClick = function rightClick(callback) {
				return this.rightMousedown(function() {
					$(this).one(mouseup, handler(callback));
				});
			};
		 
			fn.rightMousedown = function rightMousedown(callback) {
				return this[mousedown](handler(callback));
			};
		 
			fn.rightMouseup = function rightMouseup(callback) {
				return this[mouseup](handler(callback));
			};
		 
		})(jQuery.fn);
  • Вопрос задан
  • 3592 просмотра
Решения вопроса 2
RubaXa
@RubaXa
Мдя, ну и насоветовали вам тут.

У jQuery есть Special Event API:
// Определяем спец. событие `rightclick`
$.event.special.rightclick = {
  bindType: "mousedown",
  delegateType: "mousedown",
  handle: function (evt) {
    if (evt.button === 2) {
      var handleObj = evt.handleObj;
      
      $(document).one('contextmenu', false);
    
      evt.type = handleObj.origType;
      ret = handleObj.handler.apply(this, arguments);
      evt.type = handleObj.type;
      
      return ret;
    }
  }
};

// Пример использования
$('.right').on({
  'rightclick': function () {
    $(this).addClass('pressed');
  },
  'mouseup': function () {
    $(this).removeClass('pressed');
  }
});


jsbin.com/gujecemadi/1/edit?js,output
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@aLLyofgod
В jQuery нет встроенного события на правый клик.
$(document).ready(function(){ 
  document.oncontextmenu = function() {return false;}; //отключить выпадающее меню

  $(document).mousedown(function(e){ 
    if( e.button == 2 ) { //2  - правый клик, 3 - средний клик
      alert('Right mouse button!'); 
      return false; 
    } 
    return true; 
  }); 
});
Ответ написан
Комментировать
winrunner
@winrunner
Кратко обо мне
Появилось . contextmenu
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы