【问题标题】:JQuery UI Menu Item prevent default link behaviorJQuery UI 菜单项阻止默认链接行为
【发布时间】:2013-06-18 00:02:40
【问题描述】:

我的页面上有一个 JQuery UI 菜单。我想更改选择项目时的默认行为,以便不跟随链接,而是执行我的函数。以下作品:

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

但是,它会阻止执行菜单中的“选择”事件。如果我删除它,“选择”事件会触发,类似于

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

但是,event.preventDefault()event.stopPropagation() 都不会阻止链接被跟踪。以下内容阻止了链接被关注,但给了我同样的问题,即“选择”事件没有被触发。

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

如何防止链接被关注但仍触发“选择”事件?

【问题讨论】:

  • 你想使用 preventDefault() 并且它必须工作。你能用小提琴复制它吗?这是一个可以工作的小提琴。 jsfiddle.net/a6YWe。使用 preventPropagation 显然是错误的,因为它会阻止它冒泡并且不会到达您的选择事件。

标签: jquery jquery-ui jquery-ui-menu


【解决方案1】:

如果我正确解释了您的问题,也许这就是您所追求的:

将您的事件处理代码放在菜单项的点击事件中,并在该点击事件结束时调用 preventDefault()。您将不需要 click 处理程序和 select: 处理程序。

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

任何你想在点击时运行的东西仍然会运行,但不会跟随链接。

【讨论】:

  • 好的,所以我想通了,这DOES 工作,但我必须指定$mymenu.find("li"),我不确定为什么,你知道吗?
  • 从头开始,它触发了一个错误,导致锚无法激活......哈哈......
  • 您在第一条评论中是对的,因为您选择了父元素并找到所有作为其子元素的 'li' 元素。我发现 Firefox 和 Chrome 的调试器中的 Firebug 对您在第二条评论中发现的错误非常有帮助。编辑:如果你已经解决了你的问题,如果你能把它标记为答案,那就太好了。 :)
猜你喜欢
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多