Есть функция аккордиона
function accordion_bottom() {
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function() {
$('.accordion_arrow').toggleClass('closed');
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight){
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
}
}
}
Она прекрасно работает до момента выполнения вот этой функции:
function ajax_sorting() {
var sotr_item = $('.sorting-line .sort-item.active'),
field = sotr_item.data('field'),
type = sotr_item.data('type'),
cur_page = sotr_item.data('curpage'),
order = '';
console.log(type);
if (sotr_item.hasClass('up')) {
order = 'ASC';
} else {
order = 'DESC';
}
var data = {
action: 'listing_sorting',
term_id: $('.sorting-line').data('term-id'),
orderby: {
field: field,
order: order,
type: type
},
search: $('.search-form').serialize(),
options: $('.options-form').serialize(),
cur_page: cur_page
};
$.ajax({
url: '/wp-admin/admin-ajax.php',
type: 'POST',
data: data,
//dataType: 'JSON',
success: function (data_ajax) {
//console.log(data_ajax);
$('.offer-lists-container').html(data_ajax);
accordion_bottom();
},
error: function (data_ajax) {
},
complete: function (data) {
//console.log(data);
}
});
}
Суть в чем, аккордеоны установлены на карточках товара, все работает, но стоит воспользоваться сортировкой товаров, например, по цене и аккордеоны перестают работать. На сколько я понимаю, функция считает количество аккордеонов (переменная i) и циклом подставляет их в событие onclick. При сортировке соответственно нужно пересчитать количество аккордеонов, т.е. в success: поставить выполнение функции аккордеонов. Но чет не работает, то ли идея не та, то ли в синтаксисе что-то напутал