Кнопка реагирует на нажатие правой кнопки - PullRequest
0 голосов
/ 26 апреля 2018

Предположительно, моя кнопка должна отображать следующий элемент при нажатии, и она должна слушать только щелчок левой кнопкой мыши.Оказывается, он может реагировать и на правый клик.Как я могу остановить это?

Я искал о правильных щелчках, и большинство ответов о "contextmenu".

https://api.jquery.com/contextmenu/

ContextmenuСобытие отправляется элементу, когда на нем нажата правая кнопка мыши, но перед отображением контекстного меню.Если клавиша контекстного меню нажата, событие запускается в элементе html или в текущем фокусированном элементе.

Мой код выглядит следующим образом.

.on("mousedown", ".down-arrow", $.proxy(function (e) {
		//do something
		console.log("Left click");
	}, this))

.on("contextmenu", ".down-arrow", $.proxy(function (e) {
		console.log("Right click");
		e.preventDefault();
		return false;
	}, this))

И когда я сделаю правый щелчок, консоль напечатает

Left Click
Right Click

Надеюсь, что кто-то может помочь.

Edit2: я изменил"нажмите", чтобы "mousedown"

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Итак, что я сделал, чтобы решить мою проблему - это использование

event.which

Вот мой код:

.on("mousedown", ".down-arrow", $.proxy(function (e) {
		//do something
    if (e.which === 1) {
    var interval = setInterval (function() {
		console.log("Left click");
    }, 50);
    } else {
      console.log("This won't work");
    }
}, this))
0 голосов
/ 26 апреля 2018

Я думаю, вам просто нужно остановить распространение событий.

var button = $('input');

$(document.body).on('click', '.down-arrow', function (e) {
	console.log("Left click");
});

$(document.body).on('contextmenu', '.down-arrow', function (e) {
	return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="down-arrow">DOWN ARROW</span>

Редактировать : отредактировал мой пост, чтобы связать событие с body.

Редактировать 2: кнопка не реагирует на щелчок правой кнопкой мыши, как объяснил пользователь.

...