禁用平板电脑/移动设备的jQuery SnapPoint

时间:2013-06-07 02:54:15

标签: destroy enquire.js

我对这一点感到有点难过。

如何关闭移动设备/平板电脑的以下代码(< 768px)并将其打开以用于桌面设备(> 786px)?

Github上:
https://github.com/robspangler/jquery-snappoint

演示:
http://robspangler.com/git/jquery-snappoint/demo/demo.html

非常感谢正确方向上的一点。

1 个答案:

答案 0 :(得分:0)

你基本上要求的是一种撤消所讨论插件所做的任何事情的方法。在查询中转换为:

enquire.register("(min-width:768px)", {
    match : function() {
        //apply the plugin
    },
    unmatch : function() {
        //undo whatever the plugin did
    }
}, true);

最后的true告诉我们始终认为这是无能为力的浏览器的匹配。那样旧的IE等将始终获得桌面版本,而其他人都行为正常。请参阅此处的“移动优先”部分:http://wicky.nillia.ms/enquire.js/#delving-deeper了解更多信息

因此,查看该插件时,它不会提供关闭/撤消其行为的API(使用jQuery插件的常见主题)。值得庆幸的是,它似乎唯一能做的就是为窗口滚动事件附加一个监听器。所以你应该能够做到这一点:

enquire.register("(min-width:768px)", {
    match : function() {
        $(".whatever").snapPoint();
    },
    unmatch : function() {
        $(window).off("resize");
    }
}, true);

注意:有问题的插件没有命名它附加的事件处理程序,所以我们被迫有点笨拙并关闭所有resize事件处理程序。这最终意味着我们在这里所做的事情可能会影响其他插件的行为。

如果由于某种原因我所建议的不起作用(根据上面的注释),你应该考虑将插件作者的问题提出来:

  1. 提供撤消其行为的机制
  2. 命名空间事件处理程序,以便可以在不影响其他处理程序的情况下删除它们。
  3. 希望有所帮助。