900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 监听元素宽高变化resize

监听元素宽高变化resize

时间:2024-01-09 09:51:41

相关推荐

监听元素宽高变化resize

首先我们先了解js中resize功能只支持window对象

正常情况下我们队某一元素使用resize功能是无法监听到元素宽高变化的。

1.重构resize()

在已经引入jquery的情况下

js文件中增加以下代码

(function($, h, c) {var a = $([]),e = $.resize = $.extend($.resize, {}),i,k = "setTimeout",j = "resize",d = j + "-special-event",b = "delay",f = "throttleWindow";e[b] = 250;e[f] = true;$.event.special[j] = {setup: function() {if (!e[f] && this[k]) {return false;}var l = $(this);a = a.add(l);$.data(this, d, {w: l.width(),h: l.height()});if (a.length === 1) {g();}},teardown: function() {if (!e[f] && this[k]) {return false;}var l = $(this);a = a.not(l);l.removeData(d);if (!a.length) {clearTimeout(i);}},add: function(l) {if (!e[f] && this[k]) {return false;}var n;function m(s, o, p) {var q = $(this),r = $.data(this, d);r.w = o !== c ? o: q.width();r.h = p !== c ? p: q.height();n.apply(this, arguments);}if ($.isFunction(l)) {n = l;return m;} else {n = l.handler;l.handler = m;}}};function g() {i = h[k](function() {a.each(function() {var n = $(this),m = n.width(),l = n.height(),o = $.data(this, d);if (m !== o.w || l !== o.h) {n.trigger(j, [o.w = m, o.h = l]);}});g();},e[b]);}})(jQuery, this);

使用方法

然后就可以直接使用了

//obj为目标对象,function为响应函数$(obj).resize(function(){});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。