CSS:
#contact { display: none; }
JQuery:
$("#contact").hide();
Я бы предложил:
<a id="contact" class="load">Load contacts</a>
<div id="content_contact" class="load"></div>
с CSS:
div.load { display: none; }
и
$("a.load").click(function() {
$("#load_" + this.id).load("...", function() {
$(this).show();
});
return false;
});
Редактировать: Ваша главная проблема - способ передачи обратных вызовов. Вместо:
$("#contact").load(toLoad, '', showNewContent());
сделать:
$("#contact").load(toLoad, '', showNewContent);
Первая версия передает возвращаемое значение в load()
. Вторая проходит саму функцию .
Редактировать 2: для переключения на отображение:
$("a.load").click(function() {
var dest = $("#load_" + this.id);
if (dest.hasClass("loading")) {
// do nothing if already loading
} else if (dest.is(":visible")) {
dest.hide();
} else if (dest.is(":empty")) {
dest.addClass("loading").load("...", function() {
$(this).removeClass("loading").show();
});
} else {
dest.show();
}
return false;
});
Добавлен класс «загрузки» для остановки нескольких вызовов load()
. Класс удаляется после загрузки. Контент загружается только один раз, проверяя, пуст ли целевой раздел. Вы можете изменить это, если хотите, чтобы он загружался каждый раз, когда скрыт. Это зависит от того, что вы загружаете.