javascript - 在 AJAX 调用完成之前如何隐藏页面元素?

标签 javascript jquery html css ajax

我正在编写如下所示的 HTML:

<div>
    <div id='chart_div'></div>
    <div style='visibility:hidden;' id='my_grad'>
        <svg>
            <!-- The SVG element I want to hide until the data for the chart
                 in chart_div is obtained and the chart renders -->
        </svg>
    </div>
</div>

在我的 JavaScript 中,我尝试了以下两种 AJAX 调用:


$.ajax({
    url: 'http://example.com/path/to/source/data',
    dataType: 'jsonp',
    success: function(data) {
        // Parse data and create chart (for chart_div).
    },
    complete: function (data) {
        $('#my_grad').show();
    }
});

$.ajax({
    url: 'http://example.com/path/to/source/data',
    dataType: 'jsonp',
    success: function(data) {
        // Parse data and create chart (for chart_div).
    }
}).done(function(){
    $("#my_grad").show(); 
});

问题在于,尽管 SVG 元素最初是隐藏的,但在两种情况下加载图表后都无法显示。

如何让页面的 CSS 部分等到 AJAX 调用完成后才出现?

最佳答案

您需要 #表明你的 jQuery 选择器的目标是 id HTML 元素的属性。

使用以下内容:

$('#my_grad').show()

此外,您需要更改 visibility:hidden;属性(property)display:none;

jsFiddle

作为引用,以任何 id 为目标带有 jQ​​uery 选择器的属性,您需要在 # 前加上前缀在属性值前签名。对于 class选择器使用 .字首。如果没有任何一个,您将定位到指定名称的标签;在这种情况下,您将尝试定位标签 <my_grad> .

例如:

$('#my_grad').show() <==> <div id="my_grad">

$('.my_grad').show() <==> <div class="my_grad">

$('my_grad').show() <==> <my_grad>

关于javascript - 在 AJAX 调用完成之前如何隐藏页面元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110205/

相关文章:

javascript - 更改选择javascript的值

javascript - 单击动画 Glyphicon

javascript - Bootstrap——等待视频播放完毕,然后再滑动到下一个轮播

html - Div 不会像它们应该的那样折叠 - 媒体查询

javascript - 如何在 html 中从本地 JSON 中搜索元素名称/ID?

html - 是否有 CSS 选择器来排除特定分支?

javascript - 为什么这段代码在点击按钮后没有给出输出?

javascript - Mongoose 如何在exec回调函数中传递额外参数

javascript - 隐藏div导出数据表

javascript - 指定值 "NaN"无法解析,或者在控制台超出范围