Когда пользователь щелкает элемент: «Запретить действие по умолчанию, представить меню (-и)», затем возобновить действие по умолчанию при нажатии на меню - PullRequest
0 голосов
/ 19 октября 2010

Цель

Когда пользователь щелкает элемент (с class = "menu"), действие по умолчанию не должно выполняться.Пользователю должно быть представлено меню с опциями.При щелчке по параметру должно быть выполнено действие по умолчанию.

Проблема

Очень сложно остановить исходное событие нажатия в первую очередь, поскольку онокажется невозможным восстановить «поведение по умолчанию» после этого - есть ли способ просто отложить событие, пока пользователь не щелкнет по пункту меню?

Пример

Что я хочуслучиться: нажмите на ссылку.Меню добавляется к телу.Нажмите пункт меню.Поведение по умолчанию для исходного клика теперь выполняется (что означает запуск события клика по первоначально нажатой ссылке и перенаправление на example.com).

jsFiddle

HTML, JS и CSS здесь: http://jsfiddle.net/arex1337/Tjwmx/

PS: Если вы хотите узнать, для чего мне нужен функционал, вот несколько наспех и плохо написанных мыслей о приложении, которое я имею в виду: www.scribd.com / doc / 39573220 / MyJsApp

Ответы [ 2 ]

0 голосов
/ 01 марта 2015

Это может быть легко достигнуто, посмотрите на это: Быстрое изменение кода из вопроса

// create container for url of clicked link 
var event_href = {};

function createMenu(options) {
    $ul = $('<ul></ul>');
    $ul.append('<li class="menu-header">'+options.header+'</li>');
    for (var $i = 0; $i < options.choices.length; $i++) {
        $ul.append('<li class="menu-item">'+options.choices[$i]+'</li>');
    }
    return $ul;
}

function resumeClick(){
    window.location.href = event_href;
}

$('.menu').click('click', function(e) {
    // save event data
    event_href = e.currentTarget.href;
    e.preventDefault()
        $('#placeholder ul').remove();
    createMenu({
        header: 'Choose something',
        choices: ['Item 1', 'Item 2', 'Item 3']
    }).appendTo('#placeholder');
    // init listeners on menu items with callbacks == resume function
    $('.menu-item').click('click', function(){
    resumeClick();})
});
0 голосов
/ 19 октября 2010

Это невозможно;вам нужно будет смоделировать поведение по умолчанию в коде.

Вы можете установить location.href для ссылки href.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...