我目前正在使用 jQuery 开发一个菜单,该菜单具有菜单项的键盘快捷键以及访问键。
我使用对象文字传递数据来构建菜单,该对象文字存储要绑定(bind)到菜单项的函数,如下所示:
var my_menu = [
{
label : 'File',
accessKey : 'F',
func : function() { alert('File shown'); }
}
];
我正在绑定(bind)func
使用 jQuery 的 <li>
向菜单项(click()
元素)添加函数函数,类似于:
this_li.click(function() { this_click_func.call() });
然后,我通过监听 keydown()
添加键盘支持关于document
。如果组合键与 accessKey
匹配,我只是使用click()
jQuery 中的方法来触发该函数,即使实际上,他们没有单击该项目。
这很好用,但我想了解这种方法的意见。当按键组合也匹配时运行该函数是否是更好的做法,或者使用 click()
简单地复制单击就足够了?
感谢您提出的任何意见。
最佳答案
您不应触发 click()
处理程序,因为其他组件/插件也可能订阅了 click()
事件。
在您的 keydown()
处理程序中,您应该再次调用 this_click_func.call()
。
此外,您得到的是 Object Literal Notation, not JSON .
关于javascript - function.call() 或 click(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8376243/