Показать контекстное меню на $ (". Sim-row-edit"). Mousedown

Я хочу, чтобы меню правой кнопки мыши отображалось только при щелчке правой кнопкой мыши на $(".sim-row-edit").mousedown. Ниже мой код jQuery.

Обратите внимание, что когда я щелкаю правой кнопкой мыши, я вижу сообщение alert('Right mouse button!'), но не вижу меню.

// Function to test right click
  $(".sim-row-edit").mousedown(function(e){ 
    if ( e.button == 2 ) { 
      alert('Right mouse button!'); 
      // Trigger action when the contexmenu is about to be shown
$(document).bind("contextmenu", function (event) {
    // Avoid the real one
    event.preventDefault();
    // Show contextmenu
    $(".custom-menu").toggle(100).
    // In the right position (the mouse)
    css({
        top: event.pageY + "px",
        left: event.pageX + "px"
    });
});

// If the document is clicked somewhere
$(document).bind("mousedown", function () {
    $(".custom-menu").hide(100);
});

$(".custom-menu li").click(function(){
    // This is the triggered action name
    switch($(this).attr("data-action")) {
        // A case for each action. Should personalize to your actions
        case "first": 
            console.info("first"); 
            break;
        case "second": 
            console.info("second");
            break;
        case "third": 
            console.info("third"); 
            break;
    }
  });
      //return false; 
    } 
    //return true; 
  });

html-код меню:

   <a href = "#" class = "sim-row-edit" data-type = "link">Portfolio-</a>

    <!-- right click menu -->
    <ul class='custom-menu'>
      <li data-action = "first">First thing</li>
      <li data-action = "second">Second thing</li>
      <li data-action = "third">Third thing</li>
    </ul>

код меню css:

.custom-menu {
    display: none;
    z-index:1000;
    position: absolute;
    background-color:#fff;
    border: 1px solid #ddd;
    overflow: hidden;
    width: 120px;
    white-space:nowrap;
    font-family: sans-serif;
-webkit-box-shadow: 2px 2px 7px 0px rgba(50, 50, 50, 0.5);
-moz-box-shadow:    2px 2px 7px 0px rgba(50, 50, 50, 0.5);
box-shadow:         2px 2px 7px 0px rgba(50, 50, 50, 0.5);
}

.custom-menu li {
    padding: 5px 10px;
}

.custom-menu li:hover {
    background-color: #4679BD;
    color: #fff;
    cursor: pointer;
}

Что не так в моем коде jQuery?

где .sim-row-edit в вашем html?

Leo 04.09.2018 12:05

поделитесь полным примером, пожалуйста

Leo 04.09.2018 12:05

это ваш пример jsfiddle.net/Micio/5m2nrauw/7 Может это я не понял вопроса

Leo 04.09.2018 12:08

когда я нажимаю "asd", появляется предупреждение и меню

Leo 04.09.2018 12:09

Меню правой кнопки мыши также появится, если мы не нажимаем выше asd, вопрос обновлен, в вашей скрипке, если я щелкну где-нибудь еще, появится меню правой кнопки мыши, оно должно появиться, только если щелкнуть правой кнопкой мыши на asd - @Leo

user2828442 04.09.2018 12:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
77
2

Ответы 2

I think you forget jQuery library:- 
I just made some small changes: - refer this link

      http://jsfiddle.net/raLn2uh9/5/

        <a href = "#" class = "sim-row-edit">test</a>
        <ul class='custom-menu'>
          <li data-action = "first">First thing</li>
          <li data-action = "second">Second thing</li>
          <li data-action = "third">Third thing</li>
        </ul>

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

Reinstate Monica Cellio 04.09.2018 12:29

Я говорил о версии, и в данной скрипке решение работает.

Nayan 04.09.2018 12:40

Обработчик событий jQuery в вопросе уже работает. Этот ответ ничего не добавляет.

Reinstate Monica Cellio 04.09.2018 12:41

Вам нужно отделить событие mousedown от другого обработчика и изменить свойство отображения следующим образом:

$ (". custom-menu"). css ("отображение", "блок");

полный код следующим образом,

// Function to test right click
  $(".sim-row-edit").mousedown(function(e){
   console.info('ss');
    if ( e.button == 2 ) { 
      alert('Right mouse button!'); 
	  
      // Trigger action when the contexmenu is about to be shown
	$(document).bind("contextmenu", function (event) {
		// Avoid the real one
		event.preventDefault();
		// Show contextmenu
		$(".custom-menu").toggle(100).
		// In the right position (the mouse)
		css({
			top: event.pageY + "px",
			left: event.pageX + "px"
		});
		
	});

	// If the document is clicked somewhere
	$(document).bind("mousedown", function () {
		//$(".custom-menu").hide(100);
	});

	$(".custom-menu li").click(function(){
		// This is the triggered action name
		switch($(this).attr("data-action")) {
			// A case for each action. Should personalize to your actions
			case "first": 
				console.info("first"); 
				break;
			case "second": 
				console.info("second");
				break;
			case "third": 
				console.info("third"); 
				break;
		}
	  });
	  $(".custom-menu").css("display", "block");
      //return false; 
    } 
    //return true; 
  });

если я щелкну правой кнопкой мыши и выберу первое, второе или третье, я не получаю никаких сообщений в журнале консоли

user2828442 04.09.2018 12:56

Другие вопросы по теме