function.call()或click()

时间:2011-12-04 15:16:13

标签: javascript jquery performance events

我目前正在使用jQuery中的菜单,该菜单包含菜单项的键盘快捷键以及访问键。

我使用对象文字传递数据来构建菜单,该对象文字存储了要绑定到菜单项的函数,如下所示:

var my_menu = [
    { 
        label     : 'File',
        accessKey : 'F',
        func      : function() { alert('File shown'); } 
    }
];

我使用jQuery的func函数将<li>函数绑定到菜单项(click()元素),如:

this_li.click(function() { this_click_func.call() });

然后我通过在keydown()上收听document来添加键盘支持。如果键的组合与accessKey匹配,我只需使用jQuery中的click()方法来触发该函数,即使实际上它们没有单击该项。

这很好,但我希望对这种方法有所了解。在组合键匹配时运行该功能是否更好,或者仅使用click()复制点击是否足够?

感激地收到任何评论。

1 个答案:

答案 0 :(得分:0)

您不应该触发click()处理程序,因为其他组件/插件也可能已订阅click()事件。

keydown()处理程序中,您应再次致电this_click_func.call()

此外,您获得的是Object Literal Notation, not JSON