Я создаю простой аккордеон с использованием jQuery, пока он выглядит неплохо, но он действует странно при двойном щелчке или даже при нажатии более двух раз. За исключением того, что он просто закрывается, он начинает открывать и закрывать в зависимости от того, сколько раз было нажато. Мысль о реализации переменной, что-то вроде if (! Hasbeenclicked), но не уверен, что это сработает. Поэтому в основном я задаюсь вопросом, как предотвратить двойное нажатие кнопки, если щелкнуть снова по той же опции, просто закройте сам. "SliderClass:" прокручиваемый ", prevbutton:" предыдущий ", следующий элемент:" следующий ", продолжительность: 5000, slideCount: 3, prevText: 'Previous', nextText: 'Next', clickTiming: 5000,
initSlider : function(sliderObject, direction, eventType) {
slideCount = this.slideCount;
slideWidth = sliderObject.find('li:first-child').outerWidth(true);
var lefVal = slideWidth * slideCount;
if (direction == 'moveLeft')
lefVal = -lefVal;
if (sliderObject.attr("class").indexOf("autoScroll") >= 0) {
var all_classes = sliderObject.attr("class");
if (all_classes.length > 1) {
var auto_scroll_time = all_classes.match(/\d+/)[0];
auto_scroll_time = parseInt(auto_scroll_time.split("autoScroll").join(""));
interval_duration = auto_scroll_time * this.duration;
}
}
function slideAnimate() {
if (eventType == 1)
var animateTime = this.duration;
else
var animateTime = this.duration;
sliderObject.animate({
left : lefVal
}, this.duration, function() {
var counter = 0;
sliderObject.children().each(function() {
if (counter < slideCount) {
$(this).appendTo(sliderObject);
}
counter++;
});
sliderObject.css('left', '');
});
}
if (eventType == 1) {
setInterval(function() {
slideAnimate()
}, interval_duration);
} else
slideAnimate();
// When called from normal click
},
init : function() {
$('.' + this.prevbutton).live('click', function() {
customSlider.initSlider($(this).prev(), 'moveRight', 2);
$(this).unbind("click");
});
/**
*Intialize next click
*/
$('.' + this.nextbutton).live('click', function() {
customSlider.initSlider($(this).prev().prev(), 'moveLeft', 2);
});
$('.' + this.sliderClass).each(function() {
customSlider.initSlider($(this), 'moveLeft', 1);
})
}
};
jQuery (document).ready(function ($) {
customSlider.init();
});"
Я добавил свойство boolean в ваш объект customSlider, называемый sliding
. Это получает значение true/false в зависимости от того, сколь или слайдер скользит в данный момент, тем самым предотвращая эти слайды с двойным/тройным щелчком.
Надеюсь, это поможет!