スクロールをサポートして要素を垂直方向に中央揃えする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ブロックUIプラグインと一緒に使用されます:
$('#cph')
.block(finalOptions)
.find('.blockUI.blockMsg')
.center();
UIをブロックする必要があるたびに、2番目のコードスニペットを実行します。ただし、UIのブロックを解除するときは、Block UI APIを使用して削除するだけですが、スクロールイベントハンドラーでは何もしません。UIを何度もブロック/ブロック解除すると、イベントをスクロールするために多くのイベントハンドラーが登録されますが、これは悪いことだと思います。しかし、私はその問題に適切に対処する方法がわかりません。アドバイスしてもらえますか?