监听窗口调整大小事件以关闭响应式(Sidr)菜单

千年发展目标

在此项目中:http : //www.bureauforgood.com/ia-runningstrong/1.1-Home.html

我正在使用一个名为Sidr(http://www.berriart.com/sidr/的jQuery插件来创建一个菜单,该菜单可在响应式/移动版本的右侧滑动。断点是767px。

问题是,一旦使窗口变窄并打开sidr菜单,当您使窗口变宽时,该插件当前不会将菜单隐藏起来。我知道我应该添加一个事件侦听器来监听窗口的大小,但是我不知道该怎么做(我不太了解JS)。

菜单代码为

<div id="sidr-right">
  <ul>
      <li><a href="#">Life in Indian Communities</a></li>
      <li><a href="#">What We Do</a></li>               
      <li><a href="#">Give</a></li>             
      <li><a href="#">Get Involved</a></li>             
      <li><a href="#">News & Press</a></li>
      <li><a href="#">Shop</a></li>
      <li><a href="#">About Us</a></li>
  </ul>
  <form>
      <input class="six right" placeholder="Search" name="search" type="search" />
  </form>

Sidr代码是

    /*! Sidr - v1.1.1 - 2013-03-14
 * https://github.com/artberri/sidr
 * Copyright (c) 2013 Alberto Varela; Licensed MIT */
(function(e){var t=!1,i=!1,o={isUrl:function(e){var t=RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i");return t.test(e)?!0:!1},loadContent:function(e,t){e.html(t)},addPrefix:function(e){var t=e.attr("id"),i=e.attr("class");"string"==typeof t&&""!==t&&e.attr("id",t.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-id-$1")),"string"==typeof i&&""!==i&&"sidr-inner"!==i&&e.attr("class",i.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-class-$1")),e.removeAttr("style")},execute:function(o,n,s){"function"==typeof n?(s=n,n="sidr"):n||(n="sidr");var a,d,l,c=e("#"+n),f=e(c.data("body")),u=e("html"),p=c.outerWidth(!0),y=c.data("speed"),v=c.data("side");if("open"===o||"toogle"===o&&!c.is(":visible")){if(c.is(":visible")||t)return;if(i!==!1)return r.close(i,function(){r.open(n)}),void 0;t=!0,"left"===v?(a={left:p+"px"},d={left:"0px"}):(a={right:p+"px"},d={right:"0px"}),l=u.scrollTop(),u.css("overflow-x","hidden").scrollTop(l),f.css({width:f.width(),position:"absolute"}).animate(a,y),c.css("display","block").animate(d,y,function(){t=!1,i=n,"function"==typeof s&&s(n)})}else{if(!c.is(":visible")||t)return;t=!0,"left"===v?(a={left:0},d={left:"-"+p+"px"}):(a={right:0},d={right:"-"+p+"px"}),l=u.scrollTop(),u.removeAttr("style").scrollTop(l),f.animate(a,y),c.animate(d,y,function(){c.removeAttr("style"),f.removeAttr("style"),e("html").removeAttr("style"),t=!1,i=!1,"function"==typeof s&&s(n)})}}},r={open:function(e,t){o.execute("open",e,t)},close:function(e,t){o.execute("close",e,t)},toogle:function(e,t){o.execute("toogle",e,t)}};e.sidr=function(t){return r[t]?r[t].apply(this,Array.prototype.slice.call(arguments,1)):"function"!=typeof t&&"string"!=typeof t&&t?(e.error("Method "+t+" does not exist on jQuery.sidr"),void 0):r.toogle.apply(this,arguments)},e.fn.sidr=function(t){var i=e.extend({name:"sidr",speed:200,side:"left",source:null,renaming:!0,body:"body"},t),n=i.name,s=e("#"+n);if(0===s.length&&(s=e("<div />").attr("id",n).appendTo(e("body"))),s.addClass("sidr").addClass(i.side).data({speed:i.speed,side:i.side,body:i.body}),"function"==typeof i.source){var a=i.source(n);o.loadContent(s,a)}else if("string"==typeof i.source&&o.isUrl(i.source))e.get(i.source,function(e){o.loadContent(s,e)});else if("string"==typeof i.source){var d="",l=i.source.split(",");if(e.each(l,function(t,i){d+='<div class="sidr-inner">'+e(i).html()+"</div>"}),i.renaming){var c=e("<div />").html(d);c.find("*").each(function(t,i){var r=e(i);o.addPrefix(r)}),d=c.html()}o.loadContent(s,d)}else null!==i.source&&e.error("Invalid Sidr Source");return this.each(function(){var t=e(this),i=t.data("sidr");i||(t.data("sidr",n),t.click(function(e){e.preventDefault(),r.toogle(n)}))})}})(jQuery);

我将在.js文件或html中添加什么代码,以及在什么位置添加?

谢谢!

宾格

这应该可以解决您的问题。将此代码插入您自己的.js文件中。您可以设置自定义断点

$(window).resize(function() {
  if($('body').hasClass('sidr-open') && $(window).width() >= 768) {
    //call here your closing function
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift / Objective-C中监听窗口调整大小事件

来自分类Dev

响应jQuery中的调整大小事件

来自分类Dev

无法获取根窗口调整大小事件

来自分类Dev

使用SwiftUI观察窗口调整大小事件

来自分类Dev

设置特定大小后,在窗口调整大小事件中,Highcharts图表调整大小

来自分类Dev

设置特定大小后,在窗口调整大小事件中高图表图表调整大小

来自分类Dev

从窗口滚动事件中调用窗口调整大小事件中的哪个函数?

来自分类Dev

重新实现调整大小事件

来自分类Dev

iframe不触发调整大小事件

来自分类Dev

HTML textarea调整大小事件

来自分类Dev

重新实现调整大小事件

来自分类Dev

Paperjs触发调整大小事件

来自分类Dev

在tmux中检测调整大小事件

来自分类Dev

我可以将子功能绑定到窗口调整大小事件吗?

来自分类Dev

了解带有范围的窗口调整大小事件。在函数上使用$ watch应用于$

来自分类Dev

发布窗口调整大小事件,但用户看不到页面之前?

来自分类Dev

使用cy.viewport()时如何触发窗口调整大小事件

来自分类Dev

我可以将子功能绑定到窗口调整大小事件吗?

来自分类Dev

Leaflet.js heatmap.js-窗口调整大小事件

来自分类Dev

Angular 1-测试中触发窗口调整大小事件

来自分类Dev

如何使用 jquery 窗口调整大小事件更改元素

来自分类Dev

如何使javascript调整大小事件处理程序仅在用户停止调整窗口大小之后才发生?

来自分类Dev

取消JQueryUI可调整大小的调整大小事件

来自分类Dev

响应式菜单-减少调整大小的余量

来自分类Dev

移动Chrome在滚动时触发调整大小事件

来自分类Dev

Qt QGraphicsview如何挂钩以调整大小事件

来自分类Dev

为什么我的调整大小事件没有触发?

来自分类Dev

Dart Polymer分芯器:拖动/调整大小事件

来自分类Dev

获取Iframe的高度和调整大小事件

Related 相关文章

  1. 1

    在Swift / Objective-C中监听窗口调整大小事件

  2. 2

    响应jQuery中的调整大小事件

  3. 3

    无法获取根窗口调整大小事件

  4. 4

    使用SwiftUI观察窗口调整大小事件

  5. 5

    设置特定大小后,在窗口调整大小事件中,Highcharts图表调整大小

  6. 6

    设置特定大小后,在窗口调整大小事件中高图表图表调整大小

  7. 7

    从窗口滚动事件中调用窗口调整大小事件中的哪个函数?

  8. 8

    重新实现调整大小事件

  9. 9

    iframe不触发调整大小事件

  10. 10

    HTML textarea调整大小事件

  11. 11

    重新实现调整大小事件

  12. 12

    Paperjs触发调整大小事件

  13. 13

    在tmux中检测调整大小事件

  14. 14

    我可以将子功能绑定到窗口调整大小事件吗?

  15. 15

    了解带有范围的窗口调整大小事件。在函数上使用$ watch应用于$

  16. 16

    发布窗口调整大小事件,但用户看不到页面之前?

  17. 17

    使用cy.viewport()时如何触发窗口调整大小事件

  18. 18

    我可以将子功能绑定到窗口调整大小事件吗?

  19. 19

    Leaflet.js heatmap.js-窗口调整大小事件

  20. 20

    Angular 1-测试中触发窗口调整大小事件

  21. 21

    如何使用 jquery 窗口调整大小事件更改元素

  22. 22

    如何使javascript调整大小事件处理程序仅在用户停止调整窗口大小之后才发生?

  23. 23

    取消JQueryUI可调整大小的调整大小事件

  24. 24

    响应式菜单-减少调整大小的余量

  25. 25

    移动Chrome在滚动时触发调整大小事件

  26. 26

    Qt QGraphicsview如何挂钩以调整大小事件

  27. 27

    为什么我的调整大小事件没有触发?

  28. 28

    Dart Polymer分芯器:拖动/调整大小事件

  29. 29

    获取Iframe的高度和调整大小事件

热门标签

归档