2013-12-14 4 views
0

У меня есть 2 отдельных функции, чтобы получить высоту одного элемента и применить его к его дочерью. Таким образом, в основном функция повторяется, когда документ готов и изменяется размер окна. Есть ли лучший способ сделать это?jQuery get div's height on ready & resize

$(document).ready(function() { 
    var height = $('#sgn-panel-friendslist-holder').height(); 
    $("#sgn-panel-friendslist-holder #scroll").css("height", height-24) 
}); 


$(window).resize(function() { 
    var height = $('#sgn-panel-friendslist-holder').height(); 
    $("#sgn-panel-friendslist-holder #scroll").css("height", height-24) 
}); 
+1

Вот как я всегда делал это. Я не думаю, что есть действительно лучший способ. – MElliott

ответ

0

Ну, всегда есть «различные» способы и подходы к закодировать что-то и получить тот же результат, и в этом случае, чтобы сказать, какая из них «лучше» или «более эффективным» не так уверен как это может быть и в других задачах кодирования и/или сценариев ..

, например: Вы можете взять код дубликата в .ready и .resize события и положить затем в одну функцию, например, так:

$(document).ready(function() { 
    setHeight(); 
}); 

$(window).resize(function() { 
    setHeight(); 
}); 

function setHeight() { 
    var height = $('#sgn-panel-friendslist-holder').height(); 
    $("#sgn-panel-friendslist-holder #scroll").css("height", height-24); 
} 

Но теперь возникает вопрос: действительно ли это «лучше» или «более эффективно»? У других может быть свое мнение, но, на мой взгляд, нет. Это экономит время или сохраняет строки кода? Мое мнение .. Нет. Структурно легче читать, понимать и отлаживать? Мое мнение. №

Итак, там я пойду .. Есть ли «лучший способ»? По моему мнению. Нет, не совсем.

1

Здесь лучше код:

$(document).ready(function() { 
    $(window).resize(function() { 
     var height = $('#sgn-panel-friendslist-holder').height(); 
     $("#sgn-panel-friendslist-holder #scroll").css("height", height-24) 
    }).trigger('resize'); 
}); 
+0

Нет. это не работает. Это событие запускается только при изменении размера окна (браузера), а не при загрузке страницы. Это только два раза запускается. – MElliott

+0

Не думаю, что это нормально. Вы должны попробовать еще раз. При загрузке страницы автоматически открывается окно изменения размера звонка. Вместо этого мы дублируем код. И этот блок-код будет помещен в $ (document) .ready. Полный источник: $ (document) .ready (function() { $ (window) .resize (function() { var height = $ ('# sgn-panel-friendslist-holder'). Height(); $ («# sgn-panel-friendslist-holder #scroll»). css («высота», высота -24) }). trigger ('resize'); }); –

+0

Да, я вижу .. Этот код в '$ (document) .ready() {' работает из-за .trigger ('resize'). Ты прав. Извините .. – MElliott