javascript - 多个 jQuery slider : How to disable keyboard navigation for all but one slider?

标签 javascript jquery css

我在单个页面上有六个 slider ,每个 slider 都在自己的部分中。当您滚动时, View 中的部分会获得一个 CSS 类“active”。我正在尝试为除事件部分中的 slider 之外的每个 slider 禁用键盘导航。

我当前的代码如下所示:

$('section').not('.active').on('keydown', function(e){
    if(e.keyCode === 37 || e.keyCode === 39) {
        e.preventDefault();
        return false;
    }
});

没用。他们都动了。我的选择器错了吗?有没有更好的方法来禁用一组元素的左右键盘导航?

我正在使用 Unslider .

最佳答案

看起来 keydown 事件被分配给了 document 所以首先你必须取消绑定(bind)插件分配的现有事件并绑定(bind)一个新的 keydown 事件来改变幻灯片在 nextprev 上。

如果您已使用 $('.banner').unslider();(即用于选择所有 slider 的 css 选择器)来初始化 slider ,则以下代码将完成此工作

$(function() {
    var banners = $('.banner');
    banners.unslider();
    $(document).unbind('keydown').keydown(function(e){
        var index = banners.index($('.active')[0]) + 1;
        var data = $('.active').data('unslider'+index);

        if(e.keyCode === 37 ) {
            e.preventDefault();
            data.prev();
            return false;
        }
        if(e.keyCode === 39 ) {
            e.preventDefault();
            data.next();
            return false;
        }
    });
});

样本 FIDDLE

更新

我在事件横幅的选择器中做了一个小修正

FIDDLE

如您所见,我已将 $('.active') 更改为 $('div.active')

我建议你输入一个非常具体的类名,而不是 active

您甚至可以将 $('div.active') 替换为 $('div.portfolio-slider.active')

关于javascript - 多个 jQuery slider : How to disable keyboard navigation for all but one slider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263520/

相关文章:

javascript - 用加载在所述div中的外部文件中的外部文件替换div内容

javascript - 通过具有重复键的另一个数组过滤对象数组

javascript - 如何使提交按钮仅在电子邮件字段填写时才起作用?

javascript - 单击一个按钮以在 PHP 中运行 casperJS 并在带有按钮的同一 PHP 页面中回显结果

jquery - 无法将 .addClass 应用于动态创建的元素

css - 有没有办法翻转盒子阴影?

javascript - 支持 IE8 的 React 拖放

javascript - 根据 slider 的值将不同的数据推送到数组

javascript - Jquery 和 Css 以及数学 : dots in a circle to converge in one point

css - 可见性 : hidden and visibility: collapse in flexbox? 有什么区别