优化事件处理:一个大或多小?

时间:2011-09-05 18:41:21

标签: javascript jquery

哪种模式最好,为什么?

$myElements.delegate(selector, 'event1 event2', function () {
   if (event.type === 'event1') { /* Handle event 1 */ }
   if (event.type === 'event2') { /* Handle event 2 */ }
}

$myElements
   .delegate(selector, 'event1', function () {
       /* Handle event 1 */
}
   .delegate(selector, 'event2', function () {
       /* Handle event 2 */
}

换句话说,拥有一个大型统一处理程序或许多小型单独处理程序是否更好?

2 个答案:

答案 0 :(得分:3)

我很确定第二种解决方案是首选的。来自jQuery源代码:

// Handle multiple events separated by a space
// jQuery(...).bind("mouseover mouseout", fn);
types = types.split(" ");

因此,存在拆分字符串然后为每个事件运行while循环的步骤。在第一种情况下,为每个事件调用处理程序,然后执行if语句。在第二个中,仅调用实际附加的处理程序。

此外,第二个版本也更容易阅读。

答案 1 :(得分:0)

我要说使用第二个

http://jsperf.com/lklklklklklklklklk

第二个可能更快