2013-06-18 6 views
2

У меня есть меню пользовательского интерфейса JQuery на моей странице. Я хочу изменить поведение по умолчанию, когда элемент выбран, так что вместо того, чтобы следовать ссылке, моя функция просто выполняется. Следующие работы: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(); 
}); 

Как я могу препятствовать выполнению ссылки, но все еще запускает событие «выбрать»?

+0

Вы хотите использовать preventDefault(), и он должен работать. Можете ли вы воспроизвести его на скрипке? Вот скрипка, где она работает. http://jsfiddle.net/a6YWe/. Использование preventPropagation, очевидно, неверно, поскольку это предотвратит его пузыри и не достигнет вашего выбранного события. – PSL

ответ

1

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

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

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

Все, что вы хотите запустить по клику, по-прежнему будет выполняться, но ссылка не будет соблюдена.

+0

Итак, я понял, это * работает *, но я должен указать $ mymenu.find («li»), я не совсем уверен, почему, знаете ли вы? – Ford

+0

Поцарапайте это, оно вызывает ошибку, которая препятствует активации якоря ... lol .. – Ford

+0

Вы были правы в своем первом комментарии, так как вы выбираете родителя и находите все элементы li, являющиеся его дочерними элементами. Я нашел Firebug в Firefox и отладчике Chrome, чтобы быть действительно полезным для ошибок, подобных тем, которые, как вам кажется, вы попали во второй комментарий. Редактировать: было бы здорово, если бы вы отметили это как ответ, если решили свою проблему. :) – bbill

Смежные вопросы