2

有人可以帮我解决这些关于使用 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");
    

谢谢。

4

1 回答 1

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);
于 2013-01-05T18:23:37.083 回答