如何重新计算2个相同的函数?

时间:2015-06-01 08:27:51

标签: javascript jquery html css accessibility

我正在使用我的弱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/

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

如果问题不明确,请问我任何问题

1 个答案:

答案 0 :(得分:3)

您可以将空格分隔的事件名称列表传递给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;
        });
    });