在客户端JavaScript中,除了window以外,任何元素都可以获得resize事件吗?

6

我收到了多个页面,其中提到调整大小事件可以发生在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 能否触发 resize 事件?如果不能,那么如果我们需要在页面上缩小一个部分,并且页面的一部分依赖于 scroll 事件来正确地放置另一个元素,同时还需要文档而不是窗口的 resize 事件,该怎么办呢?


2
你的事件在Firefox中对我触发。当我给body一些尺寸时,它也会在Chrome中对我触发。http://jsfiddle.net/sgHck/9/ - user2736012
在iPad上,当旋转设备时,会触发body的resize事件。 - Drahcir
但是,当您多次单击“添加”按钮以使主体现在比首次加载时更大时,body#content都不会触发事件。请尝试http://jsfiddle.net/sgHck/14。 - nonopolarity
1个回答

0
在查找了一些资料后,似乎它们可以具有调整大小事件,但不完全是您想要的方式。
你可以像这样添加一个调整大小事件。
$('#content').resize( function(){
    //stuff to do
}

或者

$('#content').on('resize', function(){
    //stuff to do
}

你已经在做这个了,但是当元素被JavaScript代码或其他方式调整大小时,这些事件不会触发。唯一的方法是使用

$('#content').trigger('resize');

实际上,您可以使用任何字符串来执行此操作。这将通过dom树向上传播。假设您在一个具有“调整大小”事件的body内部拥有#content。如果您触发#content,则它也会触发body。但是,如果您使用body触发事件,则不会触发#content。

但是,似乎您可以使用jquery-ui可调整大小方法http://jqueryui.com/resizable/获得所需的功能类型。在使用后,您可以使其可调整大小。

$('#content').resizable({options});

如果它们被更改,它应该触发调整大小事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接