jQuery .hide() 不隐藏元素

发布于 2024-12-23 17:42:01 字数 527 浏览 0 评论 0原文

当完成将 json 解析为指定的 span 标签时,我想自动隐藏英制标签 currentimperial 和 Forecastimperial 但是当我尝试执行此操作

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

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

并在 chrome 中查看结果并在控制台中查看时,我看到

style="display: none; "

它们实际上没有

style="display: inline; "

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

感谢您收到的任何帮助。

When finished parsing the json into the specified span tags I wanted to automatically hide the imperial tags currentimperial and forecastimperial but when I try to do this use

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

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

and view the result in chrome and look in the console I see that instead of

style="display: none; "

they actually have

style="display: inline; "

Here is my whole javascript and html on jsBin http://jsbin.com/efaguv/edit#javascript,html

Thanks for any help I recieve.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

揽月 2024-12-30 17:42:02

我认为问题是你没有考虑到你的 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 成功回调中的元素吗?

I think the problem is that you haven't allowed for the fact that your ajax call is asynchronous.

A much simplified example of what's happening:

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 });
  • line 2 executes
  • line 3 executes to make the ajax request (response will be received at some point in the future)
  • lines 11-13 execute to hide the items
  • line 14: your document ready function completes
  • (eventually) ajax response is received and success handler is called so line 7 executes.

Because (in your full code) the ajax success callback makes the elements visible (using .fadeIn()) the end result is that they are visible.

Can you instead hide the elements within that ajax success callback?

近箐 2024-12-30 17:42:02

您可以使用

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

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

You can use

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

or

document.getElementById('currentimperial').style.display="none";
月下凄凉 2024-12-30 17:42:02

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

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

I had a similar issue where hide was not hiding. I am using angular and found that a directive was using the !important css feature on the display style attribute forcing it to remain a block and preventing hide from changing the display to none.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文