jquery blockUI 判断页面或特定元素是否被阻止

问题描述 投票:0回答:4

有没有办法判断 $.blockUI(); 是否有效已被调用但 $.unblockUI() 尚未被调用? 理想情况下,这应该能够阻止整个页面和特定元素。

我希望它能像这样工作

> $.blockUI();
> $.isBlockUI?():
>> true
> $.unblockUI();
> $.isBlockUI?();
>> false
jquery blockui
4个回答
32
投票
var data = $('#element').data();
//will return Object like: { blockUI.isBlocked=1, blockUI.onUnblock=null} 

if (data["blockUI.isBlocked"] == 1)
// is blocked
else
// is not blocked

10
投票

看看我发现了什么在这里

  $(document).ready(function() { 
    $('#demo14').click(function() { 
        $.blockUI({ 
            fadeIn: 1000, 
            timeout:   2000, 
            onBlock: function() { 
                alert('Page is now blocked; fadeIn complete'); 
            } 
        }); 
    });

显然有一个用于 Block 和 unBlock 的函数,有点像 onSuccess 函数。 因此,在 onBlock 函数中,您只需设置一个全局布尔值即可。

希望这有帮助!

快乐编码! ;)


4
投票

我使用更原始的技巧:

var isUIBlocked = $('.ui-widget-overlay:visible').length > 0;

if(isUIBlocked){
  // something is displayed with an active overlay, hence stop
}

即使将

.dialog()
modal:true

一起使用,这对我也有效

0
投票

这可以找到当前被阻止的所有特定元素:

const $blockedElements = $("*").filter(function() { return $(this).data("blockUI.isBlocked") === 1 });
© www.soinside.com 2019 - 2024. All rights reserved.