jQuery .hide()不隐藏元素

时间:2012-01-02 07:19:05

标签: javascript jquery hide

当完成将json解析为指定的span标签时,我想自动隐藏imperial标签currentntimperial和forecastimperial但是当我尝试这样做时使用

$('#currentimperial').hide();

$('#forecastimperial').hide();

并在chrome中查看结果并在控制台中查看我看到的而不是

style="display: none; "

他们确实有

style="display: inline; "

这是我在jsBin http://jsbin.com/efaguv/edit#javascript,html

上的整个javascript和html

感谢我收到的任何帮助。

3 个答案:

答案 0 :(得分:4)

我认为问题在于你没有允许你的ajax调用是异步的。

正在发生的事情的简化示例:

1 jQuery(document).ready(function($) {
2   $('#warning').remove('#warning');   
3   $.ajax({
4        url: 'http://api.wunderground.com/api/APIKEYREMOVED/geolookup/conditions/forecast/q/51.773079,-1.591353.json',
5        dataType: "jsonp",
6        success: function(parsed_json) {
7           $('#currentimperial').fadeIn(1000).append(+temp_f+ '℉ ');
8        }
9    });
10 
11   $('#celcius').hide();
12   $('#currentimperial').hide();
13   $('#forecastimperial').hide();
14 });
  • 第2行执行
  • 第3行执行以发出ajax请求(将在某个时间点收到响应)
  • 第11-13行执行以隐藏项目
  • 第14行:您的文档就绪功能完成
  • (最终)收到ajax响应并调用成功处理程序,因此第7行执行。

因为(在完整代码中)ajax成功回调使元素可见(使用.fadeIn()),最终结果是它们是可见的。

你可以改为隐藏ajax成功回调中的元素吗?

答案 1 :(得分:1)

您可以使用

$('#currentimperial').slideUp();

document.getElementById('currentimperial').style.display="none";

答案 2 :(得分:1)

我有一个类似的问题,其中hide没有隐藏。我正在使用angular并发现指令正在使用!important样式属性上的display css功能,强制它保持阻止并阻止隐藏将显示更改为无。

elem.attr('style', 'display: none !important;');