2015-04-23 31 views
2

我使用jquery BlockUI插件在執行請求時鎖定屏幕。默認情況下,我爲每個Ajax調用設置它。但我也有使用ajax加載數據的Bootstrap模式。當打開引導模式對話框時不要使用blockUI

$(document) 
.ajaxStart(function() { 
    $.blockUI({ 
     message: $('#img-loader'), 
     css: { 
      border: 'none', 
      padding: '5px', 
      'background-color': 'transparent', 
      '-webkit-border-radius': '10px', 
      '-moz-border-radius': '10px', 
      opacity: .6, 
      color: '#fff', 
      cursor: 'wait' 
     } 
    }); 
}) 
.ajaxStop($.unblockUI); 

問題 - 當我打開模式屏幕變暗(2 blockUI應用)。 如何打開模式時使用unblockUI(只使用Bootstrap背景更衣室)?

我的嘗試:

$('.modal').on('shown.bs.modal', function() { 
    $.unblockUI(); 
}); 

OR

$('.modal').on('show.bs.modal', function() { 
     $.unblockUI(); 
    }); 

但這並沒有工作。看起來BlockUI插件稍後屏蔽了屏幕。

+0

向我們展示了做「默認情況下我將它設置爲每一個Ajax調用」 –

+0

@AaronDigulla代碼,請更新 – demo

回答

1

您正在註冊一個觸發任何AJAX調用的全局事件處理程序。代碼沒有區分上下文。

不幸的是,you can't access the details of the AJAX request from the ajaxStart handler。否則,我會建議傳遞一個額外的選項,如blockUI: true到處理程序將使用的請求。

相反,您將不得不將$.blockUI({...});的代碼轉換爲輔助函數(因此您不必每次都編寫它)。您現在必須在每次進行要阻止UI的AJAX調用時調用此幫助函數。撥打新幫手功能的好地方是the beforeSend callback

+0

我添加這樣的功能blockUI:'$ .fn.esrbBlockUI =函數(){ \t $。 blockUI({ \t \t消息:$('#IMG-裝載機), \t \t CSS:{ \t \t \t邊框: '無', \t \t \t填充: '5px的', \t \t \t的背景-colo R': '透明', \t \t \t '-webkit-邊界半徑': '10px的', \t \t \t '-moz-邊界半徑': '10px的', \t \t \t不透明度:0.6, \t \t \t顏色: '#FFF', \t \t \t光標: '等待' \t \t} \t}); }'在每個beforeSend在ajax調用,但不是在每個請求這個塊的作品......得到一些錯誤「Uncaught TypeError:無法讀取blockUI庫中屬性'parentNode'未定義」。所以不知道該怎麼辦 – demo

+0

我的第一個猜測是'$('#img-loader')'的問題。如果不是這樣,你將不得不獲取blockUI的未壓縮版本並調試問題。 –

+0

好吧,是的,這是我的錯......現在它似乎工作正常。並感謝您的回答 – demo