2013-01-05 72 views
2

有人可以請幫我解決這些關於使用jquery blockui插件(http://jquery.malsup.com/block/#)的問題嗎?jquery blockui插件不會覆蓋默認的「等待」消息

  1. 爲什麼沒有這項工作?

    $(document).ajaxStart($.blockUI({message: "wait..."})).ajaxStop($.unblockUI); 
    

    如果我只是這樣做:

    $(document).ajaxStart($.blockUI).ajaxStop($.unblockUI); 
    

    它的工作原理,但我想設置重寫我自己默認的消息。這不起作用或者:

    $.blockUI({ message: "wait..." }); 
    
  2. 我已經能夠覆蓋這一消息:

    $ .blockUI.defaults.message = 「等待...」;

    ,但如果我在頁面中定義一個div並把它傳遞到消息屬性,則它不工作,但根據它應該插件的網站上的文檔:

    <div id="loadingMessageBox" style="display: none;"> 
        <img src="../Images/spinning.gif" />wait... 
    </div> 
    
    $.blockUI.defaults.message = $("#loadingMessageBox"); 
    

謝謝。

+0

因爲' $ .blockUI'是一個方法的引用,'$ .blockUI({message:'wait ...'})'是一個方法調用 – GreyBeardedGeek

+0

謝謝,GreyBeardedGeek。有沒有一種方法可以覆蓋屬性作爲這一行的一部分呢? '$(文件).ajaxStart($ blockUI).ajaxStop($ unblockUI);'?第二個問題呢? –

+0

在這裏可以正常工作:http://jsfiddle.net/gHMk3/ – charlietfl

回答

1

$(document).ajaxStart()將函數的引用作爲參數。 它提供了一個jquery在將來調用ajax調用時調用的函數。 這就是爲什麼工作版本是$document.ajaxStart($.blockUI),而不是$document.ajaxStart($.blockUI())

你的第二個版本,$.document.ajaxStart($.blockUI({message: 'wait...'})的功能等同於$document.ajaxStart($.blockUI()) - 它會立即調用blockUI功能,不提供對它的引用。

最簡單的(也許不是最好的)的方式來解決這個問題,如果你不想更改默認blouckUI消息,是包裝在另一個函數,是這樣的:

var ajaxBlock = function() { $.blockUI({message: 'wait...'}) } 
$(document).ajaxStart(ajaxBlock); 
+0

是的,你的建議可行,但如果我這樣做,它不會。你能告訴爲什麼嗎? '$(document).ajaxStart(function(){ $ .blockUI({message:$(「#loadingMessageBox」)}) })。ajaxStop($。unblockUI);' –

+0

非常抱歉。我的錯。忘了在我的代碼中註釋一行... –