【问题标题】:JQUERY and window resizeJQUERY 和窗口调整大小
【发布时间】:2013-06-11 21:57:09
【问题描述】:

这似乎是一个关于 Jquery 和 twitter 引导的简单问题

我有一个 twitter 引导程序,流体布局,当窗口调整大小时,流体行明显调整大小,但我注意到这些 <div>s 没有收到或发出 .resize 事件

我可以使用$(window).resize 检测浏览器窗口调整大小,但即使子元素调整大小,将调整大小处理程序附加到它们不会导致调整大小事件触发

我知道你可能会说调整大小事件只会“向上”冒泡,但如果 div 正在调整大小,由于浏览器窗口调整大小(并通过引导 CSS),它肯定会收到一个调整大小事件。

【问题讨论】:

  • 那么你的问题是什么?
  • fyi,如果你想在 window 以外的任何地方使用 jQuery 的调整大小,你需要一个像这样的插件 -> benalman.com/projects/jquery-resize-plugin
  • 根据MDN,“只有window 对象有onresize 事件。”所以不管你喜不喜欢,你只需要相应地编码。 (如果textarea 元素也有调整大小事件,那就太好了,因为(在某些浏览器中)用户可以独立于其他元素调整它们的大小,但其他元素类型调整大小只是因为整个窗口,所以...)
  • "...将调整大小处理程序附加到它们不会导致调整大小事件触发..." 对。一般元素没有resize 事件。
  • 是的,谢谢,我读完了

标签: jquery dom twitter-bootstrap resize event-bubbling


【解决方案1】:

最好的办法是简单地将resize 处理程序放在window 上,并在该处理程序中处理整个页面内容所需的任何与调整大小相关的更改。

或者,您可以在调整窗口大小时触发元素上的自定义事件:

$(".resizer").on("customresize", function(){
    var $this = $(this);
    $this.text($this.width());
});

$(window).resize(function(){
   $(".resizer").trigger("customresize"); 
});

http://jsfiddle.net/vs8Q8/

【讨论】:

  • 谢谢,我试图对代码进行分区,这样我就没有一个处理程序,而是将一个特定处理程序附加到受影响的元素(主要是隐藏的 div)
  • 您可以创建自己的自定义事件并在window.resizetrigger
猜你喜欢
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
相关资源
最近更新 更多