2016-08-16 3 views
5

При изменении размера он не обновляет высоту. Как только нагрузка установит ее высоту, она не будет обновляться, несмотря на то, что я обновляю переменную.Высота элемента не обновляется после изменения jquery

Если я вынимаю линии, где он устанавливает высоту, то моя переменная обновляется нормально, но как только высота установлена, она ничего не делает.

Где я пошла не так?

var hero_height = $('.hero-image').outerHeight(); 
console.log('heroHeight: ' + hero_height); 

$(document).ready(function() { 
    $(window).load(function() { 

     $('.hero-image').css('height', hero_height); 

    }); 

    $(window).resize(function() { 

     if (hero_height !== $('.hero-image').outerHeight()) { 
      $('.hero-image').css('height', hero_height); 
     }; 

     hero_height = $('.hero-image').outerHeight(); 
     console.log('heroHeight: ' + hero_height); 

    }); 
}); 

Вот JS скрипку
https://jsfiddle.net/5c1za6xa/

+0

Есть ли какая-то особая причина, по которой вы не можете просто использовать свойство% или em на изображении? Я не думаю, что вам нужен javascript (или jQuery, если на то пошло) для этого и пытаться реализовать его таким образом, это только даст вам головные боли. Например, см. Http://learnlayout.com/percent.html. – nmg49

+0

Я уже использую процентную высоту на изображении героя, и он работает по назначению. Я просто хочу добавить исправление для мобильных телефонов, которые скрывают свои адресные бары. Когда адресная строка скрывается, тогда высота окна теперь больше, и поэтому процент пересчитывает, заставляя контент прыгать по мере его роста. Честно говоря, я только что понял, что это решение тоже не сработает ... Поскольку высота также будет обновляться через jquery, когда адресная строка будет скрыта ... Hmmm ... – KINKWILDE

+0

А, спасибо за разъяснение – nmg49

ответ

1

Включить в функции Изменить размер окна var hero_height = $('.hero-image').outerHeight();.

$(window).resize(function() { 
    var hero_height = $('.hero-image').outerHeight(); 
    if (hero_height !== $('.hero-image').outerHeight()) { 
     $('.hero-image').css('height', hero_height); 
    }; 

    hero_height = $('.hero-image').outerHeight(); 
    console.log('heroHeight: ' + hero_height); 
}); 
+0

Извините, это еще не Не работай. – KINKWILDE

+0

вы можете загрузить свой код в фрагменты кода, чтобы я мог получить лучшую идею. –

+0

Оригинальный вопрос был обновлен с помощью скрипта JS – KINKWILDE

0

Вы слишком задумываетесь об этом! Для этого вам не нужен jQuery, только CSS media queries.

Вот пример

nav { 
    display: block; 
} 

@media screen and (max-width: 480px) { 
    nav { 
    display: none; 
    } 
} 

Это скроет навигационную панель на мобильных устройствах (или технически, ничего с высотой экрана меньше, чем 480px). Вы можете, очевидно, изменить максимальную ширину и стили в соответствии с вашими потребностями. Это намного превосходит JQuery по ряду причин

  1. Это намного легче читать
  2. Это не требует JavaScript, поэтому он будет работать для пользователей/устройств, не поддерживающих JavaScript (который данность, почти никто в эти дни). Но не используя javascript также значительно ускорит время загрузки страницы.
  3. В целом (начиная с выпуска CSS3) вам почти никогда не нужно использовать javascript (или jQuery) для настройки стиля. Поэтому, поскольку вы пытаетесь изменить стиль/внешний вид страницы, вы должны использовать CSS. Оставьте JS динамической функциональностью вашей веб-страницы, а не стилями.
+0

И вы полностью недооценили ситуацию - я ничего не делаю с навигацией ... Мой ответ выше говорит о стандартном пользовательском интерфейсе телефонов. Вы знаете эту адресную строку, в которую вы вводите URL?Это автоматически скроется на свитке ... Поэтому почему я пытался придумать решение, чтобы остановить мой контент HERO-IMAGE от прыжка ... – KINKWILDE

+0

KINKWILDE, вам нужно уточнить ваши вопросы лучше. Ваше название не точно передает ваш вопрос, и ваши разъяснения являются неопределенными и запутанными. – nmg49

Смежные вопросы