jquery blockui插件不会覆盖默认的“等待”消息

时间:2013-01-05 18:06:33

标签: jquery jquery-plugins blockui jquery-blockui

有人可以帮我解决有关使用jquery blockui插件(http://jquery.malsup.com/block/#)的问题吗?

  1. 为什么这不起作用?

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

    如果我这样做:

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

    它可以工作,但我想设置覆盖我自己的默认消息。这也不起作用:

    $.blockUI({ message: "wait..." });
    
  2. 我已经能够用这个覆盖消息:

    $ .blockUI.defaults.message =“等待......”;

    但是如果我在我的页面中定义div并将其传递给message属性然后它不起作用,但根据插件网站中的文档它应该:

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

1 个答案:

答案 0 :(得分:1)

$(document).ajaxStart()将函数引用作为参数。 当ajax调用启动时,它为将来调用jquery提供了一个函数。 这就是有效的版本是$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);