在客户端JavaScript中,窗口之外的任何元素都可以获得调整大小事件吗?

nop*_*ole 6 javascript dom

我得到多个页面说调整大小事件可以在一个bodydiv元素上:

http://www.w3schools.com/jsref/event_onresize.asp

http://v3.javascriptmvc.com/docs/jQuery.event.special.resize.html#&who=jQuery.event.special.resize

但后来我在jsfiddle或独立页面中尝试了它,并且永远不能在元素上获得resize事件:

http://jsfiddle.net/sgHck/1/

http://jsfiddle.net/sgHck/8/

可以body或者div可以获得调整大小的事件吗?如果没有,如果我们需要在页面中缩小一个部分,并且页面的一部分依赖于scroll事件来正确放置另一个元素,那么resize该文件的事件,而不是窗口也将需要呢?

The*_*ser 0

经过一番研究后,他们似乎可以调整事件的大小,但并不完全按照您想要的方式。

您可以像这样添加调整大小事件

$('#content').resize( function(){
    //stuff to do
}
Run Code Online (Sandbox Code Playgroud)

或者

$('#content').on('resize', function(){
    //stuff to do
}
Run Code Online (Sandbox Code Playgroud)

您已经在这样做了,但是当通过 javascript 代码或类似代码调整元素大小时,这些不会触发。以这种方式触发它的唯一方法是

$('#content').trigger('resize');
Run Code Online (Sandbox Code Playgroud)

你真的可以用任何字符串来做到这一点。这确实通过 dom 树向上传播。假设您的 #content 位于主体内,并且两者都有“调整大小”事件。如果您触发#content,它也会触发正文。但是,如果您使用 body 触发事件,则不会触发#content。

不过,您似乎可以使用 jquery-ui 可调整大小方法http://jqueryui.com/resizes/获得所需的功能类型。当你做了一些可调整大小的东西之后

$('#content').resizable({options});
Run Code Online (Sandbox Code Playgroud)

如果它们发生变化,它应该触发调整大小事件。