Пункт меню JQuery UI предотвращает поведение ссылок по умолчанию

У меня есть меню JQuery UI на моей странице. Я хочу изменить поведение по умолчанию, когда элемент выбран, чтобы вместо перехода по ссылке моя функция просто выполнялась. Следующие работы:

$mymenu.find("a").click(function(){
    return false;
});

Тем не менее, он предотвращает выполнение события "select" в меню. Если я удаляю его, срабатывает событие "выбрать", что-то вроде

$mymenu.menu({
    select: function(event, ui) {
        alert(ui.item.text());
    }
});

Тем не менее, ни event.preventDefault() или же event.stopPropagation() останавливает переход по ссылке. Следующее не позволяет перейти по ссылке, но дает мне ту же проблему, что событие select не вызывается.

 $mymenu.find("a").click(function(e){
     e.stopPropagation();
 });

Как бы я мог запретить переход по ссылке, но при этом вызвать событие select?

1 ответ

Решение

Если я правильно интерпретирую ваш вопрос, возможно, это то, что вам нужно:

Поместите свой код обработки события в событие click для пункта меню и вызовите protectDefault() в конце этого события click. Вам не понадобится ни обработчик кликов, ни обработчик select:.

$mymenu.find("a").click(function(event){
    // event handling code - alert($(event.target).text());
    event.preventDefault();
});

Все, что вы хотите запустить по клику, все равно будет запущено, но по ссылке переходить не будут.

Другие вопросы по тегам