Я пытаюсь использовать аккордеон как для события setInterval
, так и для взаимодействия с пользователем. Когда пользователь щелкает раздел, setInterval должен прекратить обновление видимого раздела.
По этой причине у меня есть следующий (я ожидал) повторно используемый код:
// based on the id supplied, toggle the collapse function
function setSlideshow (cardId, autoClick=true) {
if(!(autoClick)){
//stop the counter
}
$('.slideshow img').removeClass('show')
var clickedCard = $('.slideshow img#' + cardId)
clickedCard.collapse('toggle')
}
// bind event for click with no userClick arg
$('#accordion .card button').click('click', slideShowClicked)
// function to call toggle
function nextSlide () {
// search for id of next slide
// i removed some code here for ease of reading
var nextSlideId = $('#slideshow img.show + img').attr('id')
// pass the false arg
setSlideshow(nextSlideId, false)
}
// bind setinterval
function initSlideshow () {
// add the automatic change event
setInterval(function () {
nextSlide()
}, 1000)
}
Проблема заключается в том, что когдане щелкая вручную (т. е. не передавая связанное событие, а вместо этого методом setInterval) с точно таким же аргументом cardId
для функции setSlideshow
, аккордеон не обновляется.
Почему это?
(рад опубликовать разметку при необходимости)