<script>
var href;
$(function(){
$("a.load").click(function (e) {
e.preventDefault();
href = this;
// cover all bookmarks
$("."+($(this).attr("class"))).css('border-bottom', 'solid 1px black');
$("."+($(this).attr("class"))).css('background-color', '#F5F5F5');
// uncover chosen bookmark
$("#"+($(this).attr("id"))).css('border-bottom', 'solid 2px white');
$("#"+($(this).attr("id"))).css('background-color', 'white');
$("#tempMain").load($(this).attr("href")); // load content to temp div
setTimeout(function() {resizeDivs();}, 500); // synchronize size of #main and #rightColumn
});
});
function resizeDivs() {
var heightNew = $("#tempMain").css("height");
$("#rightColumn").css('height',heightNew);
$("#main").css('height',heightNew);
// $('#main').load($(href).attr('href'));
$("#main").html($("#tempMain").html()); // is faster than loading again
}
</script>
Я загружаю подстраницы в выбранный div моей главной страницы с помощью функции jQuery. Чтобы синхронизировать высоту главного div и правого столбца, я использую метод jQuery .css()
. Я хотел, чтобы изменение размера выглядело гладко, поэтому я решил его выполнить следующие шаги:
1. Загрузите содержимое подстраницы в невидимый темп div.
2. Рассчитайте высоту этого темпа div.
3. Измените высоту главного div и правого столбца на высоту этого временного div.
4. Загрузите содержимое подстраницы в главный div.
Как дождаться загрузки div до вызова другой функции?
Однако, я знаю, что мой нынешний способ сделать это довольно хромой из-за использования setTimeout()
как импровизация ожидания контента нагрузки - Я попытался с помощью $(document).ready
, но не повезло. Использование глобальной переменной (var href
) также не выглядит lege artis, но передача this
Оператор $("a.load").click
Функция apply()
тоже не работает.
Как это сделать «правильно»?
возможно дубликат [Как ждать, пока элемент не существует?] (http://stackoverflow.com/questions/5525071/how-to-wait-until-an-element-exists) – user2284570