我想知道当一个div改变它的高度或者任何css属性时,如何触发一个事件。
我有一个id = mainContent
的div。我希望jquery在它改变高度时自动触发一个事件。我这样做了:
$("#mainContent").change('height', function() {
$("#separator").css('height', $("#mainContent").height());
});
我知道这不对。
下面是我的完整代码(我粘贴了所有代码,因为我不知道什么原因无法进入jsfidle):
第一个
每当mainContent
的高度发生变化时,我都会尝试根据mainContent
的高度调整div id= separator
的高度。
PS:在这种情况下,我知道我可以使用按钮事件来做到这一点,但我希望div在高度改变时触发事件。请帮助。提前感谢。
5条答案
按热度按时间4xrmg8kj1#
首先,没有现成的css-changes事件,但是你可以自己创建一个,因为
onchange
只用于:input
元素,而不用于css更改。有两种方法可以跟踪css的更改。
1.每隔x次(本例中为500毫秒)检查DOM元素是否有css更改。
1.当您更改元素css时触发一个事件。
1.使用
DOMAttrModified
mutation事件,但它已经过时了,所以我跳过它。第一种方式:
第二种方式:
如果你控制css的变化,第二个选择是一个更优雅和有效的方法。
文件:
Description: Attach a handler to an event for the elements.
Description: Execute all handlers and behaviors attached to the matched elements for the given event type.
2exbekwf2#
请不要使用这里其他答案中描述的技术。它们要么不适用于css3动画大小的改变,要么不适用于浮动布局的改变,要么不适用于来自jQuery平台的改变。你可以使用一个大小检测器,一个基于事件的方法,这不会浪费你的CPU时间。
https://github.com/marcj/css-element-queries
它包含可用于此目的的ResizeSensor类。
kr98yfug3#
如果你不需要支持〈IE11,那么你应该使用MutationObserver。
这里是一个链接到caniuse js MutationObserver
使用简单,效果显著。
当你不需要再观察下去的时候就断开。
查看MDN documentation了解更多信息
7ajki6be4#
再举一个简单的例子。
对于本示例,我们可以使用100 x100DIV-box:
还有一个jQuery小技巧:
步骤:
1.我们创建了DIV块元素,用于调整操作大小
就这些。- )
csbfibhn5#
至于height或其他维度参数,可以使用ResizeObserver接口。
元素类型不限于DIV,它可以是任何类型。然后,创建ResizeObserver接口的示例:
最后,调用observe()方法,该方法启动指定的元素:
每次调整元素大小时,都会触发observe()方法。
请注意:ResizeObserver接口不能与Internet Explorer一起使用。
其他有价值的答案如下:如何检测DIV的尺寸变化?