我有这个 jQuery 函数,它通过滚动支持垂直居中元素:
$.fn.center = function () {
var self = this;
this.css("position", "absolute");
this.css("top", ($(window).height() - this.height()) / 2 + $(window).scrollTop() + "px");
$(document).on("scroll", function () {
self.center();
});
return this;
};
它与 jQuery Block UI 插件一起使用:
$('#cph')
.block(finalOptions)
.find('.blockUI.blockMsg')
.center();
每次需要阻止 UI 时,我都会执行第二个代码段。但是当我取消阻止 UI 时,我只是简单地使用 Block UI API 将其删除,但我对滚动事件处理程序不做任何事情。如果我多次阻止/取消阻止 UI,我将注册许多事件处理程序来滚动事件 - 我猜这很糟糕。但我不知道如何正确解决这个问题。你能建议吗?