Мне кажется, проблема в том, что вы не учли тот факт, что ваш вызов 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 success делает элементы видимыми (используя .fadeIn()
), конечный результат заключается в том, что они видимы.
Можете ли вы вместо этого скрыть элементы в этом обратном вызове ajax success?