jQuery для установки высоты div в соответствии с соседним

#jquery #css

#jquery #css

Вопрос:

У меня есть два div (#mosaicBlog и #mosaicAside). У меня в CSS для #mosaicAside установлено значение overflow hidden, и я хочу установить #mosaicAside так, чтобы он всегда был высотой #mosaicBlog (динамическая высота от страницы к странице).

Я думал, что это сработает, но, похоже, это не работает. Я думаю, это может быть просто проблема с синтаксисом.

 $(function(){
    var curHeight = parseInt($("#mosaicBlog").height());
        newHeight = Math.ceil(curHeight/189) * 189 - 7;
            alert(newHeight );
    $("#blogAside").height(newHeight);
});
  

Будем признательны за любую помощь.

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

1. сделайте оповещение о новой высоте, получаете ли вы заданную высоту

2. Когда я делаю alert(newHeight); , это дает правильную высоту, но не устанавливает ее в #blogAside

3. Можете ли вы пояснить, что это, похоже, не работает, означает? Это не установка какой-либо высоты, это не установка новой высоты и т.д.?

4. @Paul Sham: Конечно. Похоже, работает в том, что jQuery получает правильную вычисленную высоту #mosaicBlog. Это значение отображается, когда я создаю предупреждение, но оно не устанавливается на высоту blogHeight. Если я изменю встроенную высоту css #blogAside с помощью firebug на предупрежденную высоту #mosaicBlog, это сработает. Однако по какой-то причине $("#blogAside").height(newHeight); либо не является последней функцией jQuery для установки высоты в #blogAside (хотя это последняя функция в файле js), либо она вообще не устанавливается.

Ответ №1:

Используйте $(function(){ вместо $({

http://jsbin.com/uzera7/edit

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

1. @Keefer: нет, замените на $({ с $(function(){ в вашей первой строке. p.s. — вы упомянули в своем сообщении, что хотите, чтобы высота была такой же, как у вашего другого DIV. ну, ваша математика неверна. На самом деле, вам вообще не следует заниматься математикой, если вы хотите, чтобы она была той же высоты.

2. @Crayon Violent: Согласен, но, похоже, без какой-либо математики это на несколько пикселей меньше. Я пробовал $(function(){ var blogCurHeight = parseInt($("#mosaicBlog").height()); $("#blogAside").height(blogCurHeight); alert(blogCurHeight); }); , но значение, о котором он предупреждает, находится в пределах нескольких пикселей, но оно не устанавливает его в #blogAside div (не переопределяя встроенное значение высоты)

3. Если вы захватываете высоту #mosaicBlog , устанавливаете #blogAside и она отклоняется на несколько пикселей, учитывали ли вы отступы?

Ответ №2:

попробуйте после загрузки документа

 $(document).ready( function() {
    var curHeight = parseInt($("#mosaicBlog").height()),
     newHeight = Math.ceil(curHeight/189) * 189 - 5;
     $("#blogAside").height(newHeight );
});
  

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

1. Извините, это завернуто в функцию document.ready в моем глобальном site.js файл.

2. alert(newHeight); задает правильную высоту #mosaicBlog, но не устанавливает ее на #blogAside

3. каков результат alert(newHeight);

4. На странице, которую я просматриваю, 1317, что соответствует высоте #mosaicBlog. При проверке в #blogAside задается встроенная высота, но мой jQuery является последним битом в файле, поэтому он должен запускаться последним (и устанавливать высоту)