Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
36
rated 0 times [  37] [ 1]  / answers: 1 / hits: 47754  / 11 Years ago, tue, may 28, 2013, 12:00:00
<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>


I'm loading subpages to a selected div of my main page by a jQuery function. In order to synchronise main div's and right column's height I'm using jQuery's .css() method. I wanted that resizing to look smoothly, so I've resolved it to following steps:

1. Load content of a subpage to an invisible temp div.

2. Calculate the height of that temp div.

3. Change the height of main div and right column to the height of that temp div.

4. Load content of a subpage to main div.



However, I am aware that my current way of doing this is pretty lame because of using setTimeout() as an improvisation of waiting for content to load - I've tried using $(document).ready but with no luck. Using a global variable (var href) also doesn't seem lege artis, but passing this operator of $(a.load).click function by apply() didn't work either.



How to do it the right way?


More From » jquery

 Answers
13

Use load callback



$(#tempMain).load($(this).attr(href),function(){
resizeDivs();
// do other stuff load is completed
});

[#77975] Monday, May 27, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jonrened

Total Points: 627
Total Questions: 114
Total Answers: 99

Location: Zimbabwe
Member since Thu, Jul 21, 2022
2 Years ago
jonrened questions
Mon, Nov 2, 20, 00:00, 4 Years ago
Tue, May 19, 20, 00:00, 4 Years ago
Tue, Jan 21, 20, 00:00, 4 Years ago
Thu, Nov 7, 19, 00:00, 5 Years ago
;