如何重构 2 个相同的函数?

How to re-factor 2 functions which are the same?

我正在用我薄弱的 javascript 知识开发一个可访问的轮播,但我遇到了语法问题。

这是给我带来问题的部分:

events: function () {
    var self = this;
this.target.on('click', '.nav-right, .right', function (e) {
    e.preventDefault();
    self.moveCarousel(self.target.find('.carousel-wrapper li'), 'left', 'right', function (cur, $el) {
        if (cur === $el.length - 1) {
            return '0';
        }

        return cur + 1;
    });
});

this.target.on('focus', '.nav-right, .right', function (e) {
    e.preventDefault();
    self.moveCarousel(self.target.find('.carousel-wrapper li'), 'left', 'right', function (cur, $el) {
        if (cur === $el.length - 1) {
            return '0';
        }

        return cur + 1;
    });
});

如果重要的话,这里是完整的代码(121 行):http://jsfiddle.net/12b63z7e/

现在,该函数的用途是什么?我只是希望幻灯片事件在单击和聚焦时都触发。问题是,根据我的编写方式,基本上是复制粘贴焦点功能的点击功能,JS 不再触发第一个功能(我现在无法在点击时滑动)。所以我想我需要在一个函数中重写这两个函数,该函数将在焦点和单击时滑动项目。

有什么不明白的地方请问我

您可以将 space 分隔的事件名称列表传递给 on() 以将相同的处理程序注册到相同元素上的多个事件

events: function () {
    var self = this;
    this.target.on('click focus', '.nav-right, .right', function (e) {
        e.preventDefault();
        self.moveCarousel(self.target.find('.carousel-wrapper li'), 'left', 'right', function (cur, $el) {
            if (cur === $el.length - 1) {
                return '0';
            }

            return cur + 1;
        });
    });