jquery 阻止 ajax 加载事件上的 UI 故障

标签 jquery ajax jquery-blockui

问题:在此代码上调用 block UI 时触发器出错

(function($){

    function preloader()
    {
        $('a#preloader').click(function(e){
           e.preventDefault();
           var url = base_url + 'runtest/preloader';

           $('div#content').load(url, preloaderCallback);
        });
    }

    function remotePreload()
    {
        $('a#remotepreload').click(function(e){
           e.preventDefault();

           var object = $(this);
           object.data('clicked', 'yes');

           var url = base_url + 'runtest/remote_preloader';

           $('div#content').load(url);
        });
    }


    /*
     * callback functions
     */

    function preloaderCallback()
    {
        $('div.imageholder img').hide();

        $('div.imageholder img').each(function(){
            var img = new Image();

            var sursa = $(this).attr('src');

            var parent = $(this).parent();

            var preloaderSource = '<img src="' + base_url + 'media/images/preloader.gif' + '" alt="loader"/>';

            parent.append(preloaderSource);

            $(img).load(function(){
                parent.append($(this));
                $(this).hide().fadeIn(500);
                $(this).siblings().remove();
            }).attr('src', sursa);
        });
    }

    function blocker()
    {
        $('#content').block();
    }

    function handlePageLoad()
    {
        $('a#remotepreload').ajaxStart(function(e){
            var elem = $(e.target);
            if (elem.data('clicked') == 'yes')
            {
                // error when blocker() function is called here
                alert('Started');
            }
        });
        $('a#remotepreload').ajaxComplete(function(e){
            var elem = $(e.target);
            if (elem.data('clicked') == 'yes')
            {

                elem.removeData('clicked');
                alert('Ended');
            }
        });
    }

    // call onready functions
    $(function(){
        preloader(); remotePreload();handlePageLoad();
    });
})(jQuery);

//这是来自 Firefox 调试器的错误 未捕获的异常:[异常...“无法转换 JavaScript 参数 arg 0”nsresult:“0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)”位置:“JS 框架::http://localhost/testsuite/media/js/jquery.min.js::匿名::第 115 行”数据:否]

这是 html 标记

<div id="wrap">
            <div id="header">
                <?= $header ?>
            </div>

            <div id="content">
                <?= $content ?>
            </div>

            <div id="sidebar">
                <?= $sidebar ?>
            </div>

            <div id="footer">
                <?= $footer ?>
            </div>
        </div>

编辑 发生这种情况时我正在使用 Jquery 1.4.1。切换回1.3,一切恢复正常。

最佳答案

blockUI 已于 January 6th 2010 更新不幸的是,作者并没有在主页的任何地方宣布这一事实。我可以确认它与 jQuery 1.4 完美配合。

关于jquery 阻止 ajax 加载事件上的 UI 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145434/

相关文章:

javascript - 使用jquery初始化 Bootstrap 进度条

javascript - 我们可以使用 jquery "Dynamic option values"获取选择菜单的选定选项文本吗

jquery - 使用 jquery post 时,Request.IsAjaxRequest() 在 Firefox 中为 true 但在 IE 中为 false 是怎么可能的

c# - ASP.NET C# : Call serverside function together with Jquery BlockUI

jquery-ui - 使用两次时 Jquery block UI 不工作?

jquery - laravel - 基于先前选择的动态下拉列表

javascript - 可以在回调中设置 javascript 函数参数的值吗?

javascript - slideToggle 不会下推下面的 div

javascript - 获取 else 语句并将其添加到 AJAX 调用函数(响应)

javascript - 使用 ajax 和 PHP 根据第一个选择框填充第二个选择框