Проблема с контекстным меню

183
05 декабря 2017, 22:38

Есть таблица истории, когда нажимаю лпм в любом месте страницы показывается меню, как сделать чтобы только в таблице истории работало мое меню, а не на всей странице?

$(document).ready(function() { 
  $(document).mousedown(function(event) { 
    $('.context-menu').remove(); 
    if (event.which === 3) { 
      var target = $(event.target); 
      $('<div/>', { 
          class: 'context-menu' // Присваиваем блоку наш css класс контекстного меню: 
        }) 
        .css({ 
          left: event.pageX + 'px', // Задаем позицию меню на X 
          top: event.pageY + 'px' // Задаем позицию меню по Y 
        }) 
        .appendTo('body') // Присоединяем наше меню к body документа: 
        .append( // Добавляем пункты меню: 
          $('<ul/>').append('<li><a href="#">Удалить</a></li>') 
          .append('<li><a href="#">Обновить</a></li>') 
        ) 
    } 
  }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<table id="history"> 
  <tr class="row"> 
    <th class="nyr">ID</th> 
  </tr> 
  <tr class="row"> 
    <td class="cell">${Id}</td> 
  </tr> 
</table>

Answer 1

Все просто - повесь обработчик не на весь документ $(document).mousedown, а только на таблицу или ее элемент

Например:

$('#history').mousedown

или

$('.row').mousedown

P.S.

Для вызова контекстного меню надо использовать обработчик contextmenu

Пример: https://jsfiddle.net/y396m4h8/

$('.block').contextmenu(function(){
  alert('click');
});

P.P.S.

Небольшое добавление - чтобы не вылезало стандартное выпадающее меню надо сделать так: https://jsfiddle.net/y396m4h8/2/

$('.block').on('contextmenu', function(e){
  alert('click');
  e.preventDefault(); // вот эта строка важна!
});
READ ALSO
Насколько в PHP нужны структуры данных?

Насколько в PHP нужны структуры данных?

Существует множество разных структур данных - стеки, очереди, списки, деревья, map'ы и тд

222
RSA Шифрование данных между Android и сервером на PHP

RSA Шифрование данных между Android и сервером на PHP

Вообщем кругом враги, поэтому захотелось реализовать следующее:

322
Непонятки с doctrine

Непонятки с doctrine

Привет всем!

292