У меня есть сайт, построенный с использованием wordpress в качестве cms, а индекс имеет длинный список заголовков в стиле согласования, и как только вы нажимаете на этот заголовок, контент для этого сообщения загружается через ajax на индексную страницу.Ajax load удваивает контент
У меня возникла проблема, что, когда заголовок снова щелкнут, он снова загружает содержимое сообщения, и если вы нажмете другой заголовок, он не будет закрыт и удалит предыдущий, который был нажат.
Я новичок в работе с ajax и не уверен, как это сделать. Есть ли способ удалить содержимое после того, как заголовок будет нажат второй раз, чтобы закрыть аккордеон или другой заголовок, чтобы щелкнуть его, чтобы развернуть и открыть. Живой сайт находится здесь: http://www.minervasydney.com/
Ниже приведен код для моего ajax и его части в моем индексном файле, в котором перечислены заголовки. Если у кого-то есть идеи, мы будем очень благодарны. Спасибо!
AJAX
$("a.exhibitionInformation").on("click", function(event) {
var exhibitionContainer = $(this).parent(".exhibition");
var url = $(this).attr("href");
var doc = $(this).next(".exhibitionDocuments");
var title = convertToSlug($(this).text().split("\n")[1]);
var slug = $(this).attr("data-slug");
$(this).toggleClass("selected");
if($(doc).is(':not(:hidden)')) {
$(doc).slideToggle();
} else {
$.ajax({
url: url,
type: "GET",
success: function(data) {
var content = $(data).find(".single-document");
$(doc).append(content).slideToggle(300);
$("html, body").animate({ scrollTop: exhibitionContainer.offset().top - 26 });
window.location.hash = slug;
}
});
}
event.preventDefault();
});
//ajaxstarStop Loading
$(document).ajaxStart(function() {
$("#loading").fadeIn(100);
});
$(document).ajaxStop(function() {
$("#loading").fadeOut();
});
function convertToSlug(Text)
{
return Text
.toLowerCase()
.replace(/ /g,'-')
.replace(/[^\w-]+/g,'')
;
}
INDEX
<section class="exhibition">
<a class="exhibitionInformation" href="<?php the_permalink(); ?>" data-slug="<?php echo $post->post_name; ?>">
<span class="dates"><?php echo types_render_field("dates", array("argument1"=>"value1")); ?></span>
<span class="opening"><?php echo types_render_field("opening", array("argument1"=>"value1")); ?></span>
<span class="title">“<?php the_title(); ?>”</span>
<span class="artist"><?php echo types_render_field("artist", array("argument1"=>"value1")); ?></span>
<span class="extra"><?php echo types_render_field("extra", array("argument1"=>"value1")); ?></span>
</a>
<article class="exhibitionDocuments">
</article>
</section>
перед отправкой ответа копию и проверить эту скрипку https://jsfiddle.net/xogzvsjf/6/, если я не ошибаюсь –
@MamdouhFreelancer спасибо за ваше предложение в скрипка. К сожалению, он снова дублировал содержимое, как только заголовок был снова нажат. Он также, казалось, влиял на слайд-переключатель, так как он не оставался открытым, когда он был нажат. Есть ли другой способ, которым вы можете подумать о том, чтобы часть, загруженная ajax, удалялась после того, как заголовок был нажат второй раз? благодаря! – RJM
Вы имели в виду, что хотите прервать запрос ajax, если щелкнул другой или текущий заголовок? проверьте это https://jsfiddle.net/xogzvsjf/10/ –