#javascript #jquery #contextmenu
#javascript #jquery #контекстное меню
Вопрос:
Я пытаюсь позже привязать контекстные меню к элементам, используя плагин ContextMenu. Итак, при первом щелчке правой кнопкой мыши по этим элементам я хотел бы :
- перехватывать щелчок правой кнопкой мыши через текущее событие в определенном классе «uncontextmenued»,
- определите, существует ли
data('events').contextmenu
, - если нет, присоедините контекстное меню (и измените класс, чтобы избежать повторного запуска этого текущего процесса),
- повторно запустите событие щелчка правой кнопкой мыши, чтобы отобразить щелчок правой кнопкой мыши.
У меня возникли проблемы с последним элементом. jQuery позволяет использовать .click()
или to .trigger('click')
, которые имитируют щелчок левой кнопкой мыши, но, похоже, не существует способа запустить событие щелчка правой кнопкой мыши через trigger
.
Или есть?
Ответ №1:
Вы можете запустить его с помощью
$('#element').trigger({
type: 'mousedown',
which: 3
});
Комментарии:
1. Хорошо, это навело меня на правильный путь. Просто для завершения ответа, указанный плагин на самом деле нуждается в наведении курсора мыши, за которым следует наведение курсора мыши… Итак, за запуском, как сказал Никлас, должен следовать триггер (‘mouseup’). Поскольку плагин считывает свойство ‘button’, а не ‘which’, фактическим ответом на мою проблему был $ (‘#element’).trigger(‘mousedown’,{кнопка: 2}).trigger(‘mouseup’) . Спасибо, Никлас.
2. Привет, субтенант, миллион благодарностей, мне нужна была точно такая же функциональность, и ваш ответ действительно мне очень помог, но я думаю, что у вас там ошибка, мне пришлось изменить его на: $ (‘#element’).trigger({type:’mousedown’, button: 2}).trigger({type:’mouseup’}); чтобы заставить его работать.
3. То же самое в моем случае, «наведение курсора мыши» вместо «наведение курсора мыши».
4. У меня это не работает. Я также попробовал решение, предоставленное Беном Лешем, но безуспешно. ?
Ответ №2:
Есть более новый способ сделать это:
$('#element').triggerHandler('contextmenu');
Комментарии:
1. Для меня
'contextMenu'
не сработало. Вместо этого'contextmenu'
сработало должным образом.
Ответ №3:
Похоже на это, но я не уверен, имеете ли вы в виду данные пользовательского интерфейса jQuery, но.
$('#element').mousedown(function(event)
{
if(event.which == 3)
{
if(typeof($(this).data('events')) === 'undefined')
{
$(this).data('events', { somedata: 'hello' });
}
else
{
// "re-throw" right click context menu
}
}
});
Комментарии:
1. Извините, но я хочу вызвать событие щелчка правой кнопкой мыши, а не присоединять к нему событие.