【发布时间】:2013-07-28 12:46:26
【问题描述】:
我有一个函数,它基本上创建了一个覆盖整个页面的覆盖 div 元素。它还将调整大小事件绑定到窗口,因此每当调整窗口大小时,叠加层也会改变其大小:
function stdOverlay() {
var overlay = $('<div />').css({width : $(window).width(), height : $(window).height()});
var overlayResize =
function() {
$(overlay).css({width : $(window).width(), height : $(window).height()});
};
$('body').append(overlay);
$(window).resize(overlayResize);
//... other codes, like remove overlay and unbind the events
//$('div.stdgui-overlay').unbind('resize', overlayResize);
}
每次调用该函数时,它都会添加一个覆盖(如果没有),并将调整大小事件绑定到窗口。当它应该删除覆盖事件时,它还会取消绑定事件。 如何检查 overlayResize 方法是否绑定到窗口元素,以防止重复绑定?类似:
if(overlyResize is not bound to window)
$(window).resize(overlayResize);
else
//do something else or do nothing;
【问题讨论】:
-
这个页面有答案。 [jquery 检查事件是否存在][1] [1]: stackoverflow.com/questions/1515069/…
-
@emaniacs 我已经看过这些答案了,不幸的是 $.data 不是一个可以长期依赖的东西,因为它很容易被 jQuery 经常改变。见this。