Пользовательский интерфейс jQuery не может найти контекстное меню - PullRequest
0 голосов
/ 20 декабря 2011

, поэтому я использую следующее контекстное меню:

(function($) {
$.fn.setUpContextMenu = function() {
    $(this).dialog({
        autoOpen: false,
        modal: true,
        resizable: false,
        width: 'auto',
        height: 'auto',
        minHeight: 'auto',
        minWidth: 'auto'
    });

    return $(this);
};

$.fn.openContextMenu = function(jsEvent) {
    var menu = $(this);
    menu.css('padding', 0);

    menu.dialog('option', 'position', [jsEvent.clientX, jsEvent.clientY]);
    menu.unbind('dialogopen');
    menu.bind('dialogopen', function(event, ui) {
        $('.ui-dialog-titlebar').hide();
        $('.ui-widget-overlay').unbind('click');
        $('.ui-widget-overlay').css('opacity', 0);
        $('.ui-widget-overlay').click(function() {
            menu.dialog('close');
        });
    });
    menu.dialog('open');

    return menu;
};

}) (Jquery);

Я использую это так:

$('#context-menu a').css('display', 'block').button();
        $('#context-menu').setUpContextMenu();
        $(document).bind('contextmenu', function(e) {
            $('#context-menu').openContextMenu(e);
            return false;
        });

Контекстное меню выглядит так:

<!--RIGHT-CLICK MENU MARKUP!--> 
<div id="context-menu">
    <a href="javascript:void(0)" id="option1">Option 1</a>
    <a href="javascript: alert($(this).attr('href'));">Option 2</a>
    <a href="javascript:void(0)" id="option3">Option 3</a>
    <a href="javascript:void(0)" id="option4">Option 4</a>
</div>

Вот моя проблема. Я пытаюсь понять, как захватить событие правого клика, чтобы я мог определить, из какого элемента это событие было запущено. Я знаю, что если мне нужно, я могу просто добавить новое значение данных в $ ('# context-menu'), которое содержит событие, но это кажется очень окольным и совсем не элегантным. Должен быть лучший способ получить оригинальное событие.

Спасибо за любую помощь, я ценю это:)

* РЕДАКТИРОВАТЬ: * Чтобы прояснить, я хочу выяснить, как ссылаться на событие правой кнопки мыши внутри тегов внутри фактической разметки контекстного меню. Когда я нажимаю на них, я выполняю некоторый javascript, как мне обратиться к событию, чтобы выяснить, какой элемент вызвал его?

1 Ответ

1 голос
/ 20 декабря 2011

Если я понимаю, что вы хотите сейчас, то, что просмотр вашего сайта помог мне понять (я думаю?), Я не создал здесь код, но я дам вам логику, стоящую за ним.

OnRightClick (элемента формы) - сохраните $ (this) (элемент формы) в качестве переменной в вашем javascript, функции, которая загружается, когда ваша страница делает.

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

Вы также можете очистить его, когда контекстное меню закрыто без выбора.

Еще лучше, в пользовательском интерфейсе jQuery есть хранилище данных, проверьте этот пост на предмет полезного кода :)

jQuery контекстное меню - поиск того, какой элемент вызвал его

...