将焦点集中在jQueryUI菜单项上,该菜单项具有比单击侦听器更宽的侦听器
Catching focus on a jQueryUI menu item with a listener broader than a click listener
我定义了一个id为leftmenu
的jQueryUI菜单,并在其列表元素中定义了单击一个项目的函数,如下所示:
$('#leftmenu>li').click(function () {
var clickedId = this.id;
$.ajax({
type: "POST",
cache: false,
url: "/Session/Index/",
success: function (result) {
if (result.length > 0)
{
performListItemAction(clickedId);
}
else
{
window.location.href = '/Home/Index/'
}
}
});
});
这工作得很好,但现在我想改变它,而不是菜单项上的click
,我想以更一般的方式捕获该项目的焦点和选择,例如使用键盘。目前,我可以使用键盘上的上下键在菜单中导航,但不会调用内部代码。我知道这是因为它只应该发生在click
上,但当我尝试activate
和focus
代替click
时,也发生了同样的事情。
我怎样才能让它以更一般的方式执行与click
相同的行为,以捕获菜单项的选择和进入?
谢谢。
这应该在select
事件中完成。这样,它可以捕获click
或select
从集中的键盘动作。
示例:https://jsfiddle.net/Twisty/v671x6ns/
jQuery$(function() {
$('#leftmenu').menu({
select: function(e, ui) {
var selectId = ui.item.attr("id");
$.ajax({
type: "POST",
cache: false,
url: "/Session/Index/",
success: function(result) {
if (result.length > 0) {
performListItemAction(selectId);
} else {
window.location.href = '/Home/Index/'
}
}
});
console.log(e.type + " event, ID: " + selectId);
}
});
});
相关文章:
- Highslide(iframe的侦听器)
- 如何在for循环中添加事件侦听器
- 选项卡侦听器未被来自后台脚本的消息激活
- 未命中服务器发送的事件侦听器
- 如何覆盖原型中的事件侦听器
- 加载侦听器上的函数触发得太早
- 无法将事件侦听器附加到画布
- 如何在d3.js中自定义事件侦听器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- 事件侦听器未在chrome扩展中的options.js中启动
- IE8更改文本区域上的事件侦听器不工作
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- jQuery将侦听器的大小调整为只触发宽度的变化
- API Google Maps Javascript在上下文菜单中调用事件侦听器
- 关闭菜单,单击带有事件侦听器和父节点的正文
- 仅将侦听器应用于具有 AJAX 无限滚动的新项
- Google Map API下拉菜单Onchange事件侦听器
- 当使用直接事件侦听器删除项时,事件停止冒泡到委派的事件
- 将焦点集中在jQueryUI菜单项上,该菜单项具有比单击侦听器更宽的侦听器
- 下拉菜单事件侦听器