Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery show()方法不适用于Chrome和IE浏览器_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript jQuery show()方法不适用于Chrome和IE浏览器

Javascript jQuery show()方法不适用于Chrome和IE浏览器,javascript,jquery,html,css,Javascript,Jquery,Html,Css,当后台任务正在进行某些处理时,我会在网页上显示一个进度加载器。我面临的问题是,包含进度加载器的div在Chrome和IE浏览器上始终保持“display:none”。不过,它在FF和Safari上运行良好 这是HTML <div id="progressIndicatorBackground"> <div id="progressIndicator"> <img src="/cms/images/icons/progressIndicator.gif"

当后台任务正在进行某些处理时,我会在网页上显示一个进度加载器。我面临的问题是,包含进度加载器的div在Chrome和IE浏览器上始终保持“display:none”。不过,它在FF和Safari上运行良好

这是HTML

<div id="progressIndicatorBackground">
  <div id="progressIndicator">
    <img src="/cms/images/icons/progressIndicator.gif" alt="Loading...">
  </div>
</div>
用于显示和隐藏进度加载器的JS函数

function progressIndicator(value) {

    if(value) {
        $("#progressIndicatorBackground").show();
    }
    else {
        $("#progressIndicatorBackground").hide();
    }
}
有几次我调用progressIndicator函数。例如,在其中一个页面中,我正在调用该函数(这只是我在web应用程序中使用的一个示例函数。还有其他函数,我也以同样的方式调用progressIndicator函数)

当后台任务正在进行且我正在获取JSON数据时,在调用progressIndicator(true)后,进度指示器应该是可见的,并且一旦处理完成,显示属性应该设置为none,因为我在完成所有操作后调用progressIndicator(false)。但progressIndicatorBackground的状态从未设置为显示:Chrome和IE上的块

function progressIndicator(value) {

    if(value) {
        $("#progressIndicatorBackground").css("display", "block"); 
    }
    else {
        $("#progressIndicatorBackground").css("display", "none"); 
    }
}
我正在使用最新版本或Chrome和IE

function progressIndicator(value) {

    if(value) {
        $("#progressIndicatorBackground").css("display", "block"); 
    }
    else {
        $("#progressIndicatorBackground").css("display", "none"); 
    }
}
p.S.S->我尝试将我的函数修改为,但没有成功。问题仍然存在于Chrome和IE上

function progressIndicator(value) {

    if(value) {
        $("#progressIndicatorBackground").css("display", "block"); 
    }
    else {
        $("#progressIndicatorBackground").css("display", "none"); 
    }
}

根据我的经验,display:none会让事情变得麻烦,只能作为最后的手段。看看这里的替代方案。我还发现有时添加
:hidden
有助于jquery显示隐藏或
显示:none
元素。例如,
$(“#progressIndicatorBackground:hidden”).show()可能会让它工作。

主要问题是因为使用了同步AJAX调用。它确实会冻结Chrome和IE,并阻止任何其他事件的发生

进度加载程序无法工作,因为它正在等待同步ajax调用完成事件加载

原始AJAX调用

fetchEventsForCategory: function (categoryId, parentId, day) {

        var to = (date.getTo(day) == null) ? '' : '&to=' + date.getTo(day);

        return $.ajax({
            url: "/billfold-api/betting/events",
            type: "POST",
            data: 'scid=' + categoryId + '&pcid=' + parentId + '&from=' + date.getFrom(day) + to,
            dataType: "json",
            async: false,
        });
    },
修改了AJAX调用并成功回调

fetchEventsForCategory: function (categoryId, parentId, day) {
        var to = (date.getTo(day) == null) ? '' : '&to=' + date.getTo(day);

        return $.ajax({
            url: "/billfold-api/betting/events",
            type: "POST",
            data: 'scid=' + categoryId + '&pcid=' + parentId + '&from=' + date.getFrom(day) + to,
            dataType: "json",
            async: true,
            success: function(data) {
                progressIndicator(false);
            }
        });
    },

在我的JS函数中,我调用了进程加载器。我删除了
progressIndicator(false)并将其置于我的ajax调用本身的success函数下。

检查
可见性
样式alsovalue返回字符串或布尔值请检查请创建一个JSFIDLE,从外观上看,您拥有相关代码,创建一个FIDLE将加快速度..show()适用于所有浏览器,但是,如果您正在显示的内容也是隐藏的,那么它将不会显示任何内容。我认为您的代码总是返回false,因此它是隐藏的,只是在添加$(“#progressIndicatorBackground:hidden”)。show();对我来说不起作用。我在代码中做了一些更改,并发布了另一个问题。这里是链接