Решение по высоте Div?

#javascript #height #document

#javascript #высота #документ

Вопрос:

Я получил следующий javascript:

     <script type="text/javascript">
      $(document).ready(function(){
        $("#sidebar").height( $(document).height() ); 

    });
    </script>
 

Это позволяет мне устанавливать высоту div такой же, как размер документа. Но на данный момент у меня возникла большая проблема. На моем сайте есть различные опции javascript, которые увеличивают высоту исходного документа.

Как вы могли догадаться, div не будет растягиваться при растяжении документа, потому что скрипт запускается только при загрузке.

Теперь мой вопрос в том, есть ли другой способ позволить javascript пересчитывать высоту при каждом увеличении размера документа или при запуске javascript. Я уже пытался поместить следующий код за некоторым кодом javascript:

  $("#sidebar").height( $(document).height() ); 
 

И некоторые из них действительно работали, но большинство нет. Также приветствуется другое решение этой проблемы, кроме javascript.

С уважением,

Август

Комментарии:

1. тогда почему бы вам не установить высоту вашего div 100% с помощью CSS вместо js?

2. Согласен с @Jmax, гораздо лучше сделать это с помощью CSS.

3. Почему-то 100% не заполняет всю страницу. Даже когда я привязываю его к тегу body. (Я знаю странное дерьмо)

Ответ №1:

Однако это далеко не эффективно, вы могли бы использовать событие «изменить размер» документа:

 $(document).resize(function() {
    //re-run code here.
}
 

Использование этого, скорее всего, не рекомендуется по большей части — это оказалось полезным для меня при создании динамических фонов на веб-странице. В идеале вы хотели бы, чтобы ваша собственная структура и стили могли справляться с изменением размера, но это не всегда просто.

Ответ №2:

Используйте событие изменения размера.

Это будет похоже на: $ (window).resize ($ (window).высота ())

Ответ №3:

 window.onresize = function () {
$("#sidebar").height( $(document).height() );
// other stuff you want to do when the window is resized
}
 

Возможно, вы захотите использовать window.setTimeout, чтобы управлять тем, как часто это вызывается. IE для одного постоянно вызывает его при перетаскивании.