0

我对这个有点难过。

我将如何关闭移动/平板电脑(<768px)的以下代码并为桌面(>786px)打开它?

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

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

一个正确方向的点将不胜感激。

4

1 回答 1

0

您基本上要求的是一种撤消相关插件所做的任何事情的方法。这在查询中转化为:

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

最后true告诉inquiry 始终认为这是对无能力浏览器的匹配。这样,旧的 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);

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

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

  1. 提供一种机制来撤销它的行为
  2. 命名空间事件处理程序,以便可以在不影响其他处理程序的情况下删除它们。

希望有帮助。

于 2013-06-09T23:44:49.017 回答