jquery - 即时禁用 Jquery 插件/函数

标签 jquery responsive-design slideshow responsive-slides

所以我在网站上有一个幻灯片,当窗口大小是移动时我想将其变成一个列表。我在想是否有办法禁用 jquery 插件或窗口大小调整功能来禁用滑动并为幻灯片列表创建移动样式。

您认为做到这一点的最佳方法是什么?

谢谢!

最佳答案

使用带有 teardown() 的幻灯片或destroy()能够删除它创建的任何元素和事件监听器的方法。

任何使用 jQuery UI 小部件工厂的 jQuery 插件都会有这个功能,但不幸的是许多其他插件没有。你可以试试这个轮播https://github.com/richardscarrott/jquery-ui-carousel ,只需确保包含 jQuery 小部件工厂:http://jqueryui.com/widget/

其次,不要尝试嗅探设备是否是移动设备,不要陷入设备方面的思考。如果用户想在手机上查看轮播怎么办?如果他们的设备被错误地解释为移动设备怎么办?做出假设可能会反过来伤害你。检测特征和属性更安全,并且应该更适合 future 。

考虑一下您要解决的问题,如果是“如果在小视口(viewport)上以列表形式呈现此幻灯片效果会更好”,那么请继续检查窗口的大小或使用 matchMedia() 测试媒体查询在实例化插件之前(为什么要做所有工作只是为了再次撤消它)以及在视口(viewport)调整大小或设备方向发生变化时再次进行。

在普通的 JS 中(对于相对最新的浏览器)可能是这样的:

var slideshowControl = function(element, breakpoint) {

    var api;

    var initSlideshow = function() {
        api = new Slideshow(element);
    };

    var removeSlideshow = function() {
        api.teardown();
        api = undefined;
    };

    // Test media query
    return function() {

        // Test if match media is available
        var matchMedia = window.matchMedia || window.msMatchMedia;

        if ( ! matchMedia) {
            return;
        }

        if (matchMedia('all and (max-width:' + breakpoint + ')').matches && ! api) {
            return initSlideshow();
        }

        if (matchMedia('all and (min-width:' + breakpoint + ')').matches && api) {
            return removeSlideshow();
        }
    };

}(document.querySelector('.slideshow'), 640);

window.addEventListener('resize', slideshowControl);
window.addEventListener('DOMContentLoaded', slideshowControl);

关于jquery - 即时禁用 Jquery 插件/函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16161029/

相关文章:

jquery - asp.net mvc 3 razor 文件上传

javascript - 在Vue表达式中引用Quasar CSS断点

css - 如何制作 3 个水平响应式背景图片

jquery - Flexslider 粘在第一帧上

jquery - 删除 Ajax 在本地主机中有效,但在生产托管中无效

JavaScript 手机交换

jquery - Bootstrap 网格系统 : How to change width for specific elements only?

css - 列高错误

javascript - 悬停时暂停幻灯片放映

javascript - 带有指向另一页的超链接的 Jquery Slideshowify