Есть таблица истории, когда нажимаю лпм в любом месте страницы показывается меню, как сделать чтобы только в таблице истории работало мое меню, а не на всей странице?
$(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>
Все просто - повесь обработчик не на весь документ $(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(); // вот эта строка важна!
});
Виртуальный выделенный сервер (VDS) становится отличным выбором
Существует множество разных структур данных - стеки, очереди, списки, деревья, map'ы и тд
Вообщем кругом враги, поэтому захотелось реализовать следующее: