Reputation: 8705
I have this function:
// AJAX MESSAGES SHOWING
show_msg.on('click', function(e){
var $this = $(this),
url = $this.attr('href'),
url_info = url + ' .basic_info > *',
url_msg = url + ' .contact_messages > *';
basic_info.slideUp('fast', function(){
basic_info.empty().load(url_info, function(){
basic_info.slideDown('fast');
});
});
contact_messages.slideUp('fast', function(){
contact_messages.empty().load(url_msg, function(){
contact_messages.slideDown('fast');
});
});
return false;
});
It is working, but I am using load two times, and I guess this is not very effective way to do this. Is there some way to load data once and then select what you need from that data?
Upvotes: 0
Views: 103
Reputation: 19888
you could do:
(function(){
var basicInfoLoaded = false, contactMessageLoaded = false;
// AJAX MESSAGES SHOWING
show_msg.on('click', function(e){
var $this = $(this),
url = $this.attr('href'),
url_info = url + ' .basic_info > *',
url_msg = url + ' .contact_messages > *';
basic_info.slideUp('fast', function(){
if(basicInfoLoaded)
basic_info.slideDown('fast');
else{
basicInfoLoaded = true;
basic_info.empty().load(url_info, function(){
basic_info.slideDown('fast');
});
}
});
contact_messages.slideUp('fast', function(){
if(contactMessageLoaded)
contact_messages.slideDown('fast');
else{
contactMessageLoaded = true;
contact_messages.empty().load(url_msg, function(){
contact_messages.slideDown('fast');
});
}
});
return false;
});
})();
Upvotes: 1