Чтобы не быть голословным, сразу все листинги:
<div class="block" id="0" name="0">
<div class="block_header">
<div class="block_name">Main</div>
<div class="block_acts">
<button class="reduct">Редактировать</button><br />
<button class="remove">Удалить</button>
</div>
</div>
<div class="block_text"></div>
</div>
$("div.block_name").click(function() {
/* Даю this постоянную переменную, чтобы обращаться из других мест, где он переназначается */
var elem = this;
/* Если элемент еще не отображается, то загружается его текст и он показывается на странице */
if ($(this).parent("div.block_header").next("div.block_text").css("display") == "none") {
$.ajax({
url: "?id=block&block="+$(this).parents("div.block").attr("id")+"&action=get_text",
dataType: "html",
success: function(html) {
$(elem).parent("div.block_header").next("div.block_text").text(html).slideDown("slow");
},
});
}
/* В противном случае элемент наоборот, убирается со страницы и из него удаляется текст */
else {
$(this).parent("div.block_header").next().slideUp("slow").empty();
}
});
$("button.reduct").click(function() {
var elem = this;
if
/* Если элемент, которым манипулировали в прошлой функции, не показан на странице, то имитируется событие из прошлой функции, для того, чтобы элемент отобразился */($(this).parents("div.block_header").next("div.block_text").css("display") == "none") {
$(elem).parents("div.block_header").children("div.block_name").click();
}
Однако элемент не отображается. Даже текст в него не вставляется, хотя с сервера загружается. Причем первый обработчик прекрасно справляется со своей задачей. Я пробовал копировать нужный фрагмент и вставить его в это условие - бесполезно.
Что очень примечательно, когда я делал эту штуку, я не загружал текст с сервера, а хранил его в элементе сразу. Все работало нормально. Здесь же, если я вставлю текст сразу в код и закомментирую фрагмент, который заменяет текст в элементе, то результат все равно нулевой.
Вобщем, очень надеюсь на вашу помощь, я уже третий день голову ломаю...