jQuery调整大小不适用于FireFox,Chrome和Safari

nav*_*een 12 jquery

$("#dvMyDIV").bind("resize", function(){
    alert("Resized");
});
Run Code Online (Sandbox Code Playgroud)

要么

$("#dvMyDIV").resize(function(){
    alert("Resized");
});
Run Code Online (Sandbox Code Playgroud)

问题

  1. 为什么这不适用于FireFox,Chrome和Safari?
  2. 这可以被认为是一个jQuery错误,因为没有为其他浏览器处理调整大小?
  3. 唯一的解决方法是调用SetTimeout函数来检查clientHeight和clientWidth吗?
  4. 任何使用jQuery的变通方法?

小智 25

我相信JavaScript resize事件仅适用于框架或窗口,而不适用于DIV.

例如,请参阅此页面:

只要用户或脚本调整窗口或框架的大小,onResize even处理程序就可用于执行指定的代码.这允许您查询窗口元素的大小和位置,动态重置SRC属性等.

因此,如果您想要检测窗口调整大小的时间,您应该使用jQuery $(window).resize(function() { });

编辑:如果你想观看DIV的大小,这取决于你的意图.如果您正在使用JavaScript调整大小,那么您可以实现一个方法来执行调整大小并让该句柄调用任何其他调整大小代码.

否则,如果您只是在有人调整窗口时调整DIV以调整大小,那么它是否只是将调整大小监听器附加到窗口然后检查DIV是否已调整大小(即存储旧的宽度值) /高度并在调整大小时检查它们?

最后,你可以考虑在宽度/高度属性上使用watch,虽然我不知道这是否完全与浏览器兼容(想想这可能只是Mozilla).我确实找到了这个jQuery插件,看起来它可能会做同样的事情(稍作修改).