У меня проблема с моим аккордеон. В первый раз, когда я нажимаю любую из заголовков, чтобы свернуть этот элемент, у него есть резкий поп, чтобы закрыть его. Я использую slideUp(), но, похоже, он не используется вначале. Если я продолжаю нажимать на строку заголовка для этого элемента, начнет работать slideUp()/slideDown().Как отключить аккордеон от первого щелчка?
Кроме того, мой подход не очень эффективен для повторного использования. Если вы посмотрите на событие click, я создаю его для каждого элемента аккордеона. Как настроить его так, чтобы он был «item1
», «item2
», «item3
» и т. Д., Аккордеон будет работать для каждого элемента без необходимости создавать новое событие для каждого события?
У меня есть jsfiddle размещена здесь: http://jsfiddle.net/Jfd9n/1/
Спасибо за вашу помощь!
// Accordion Plugin
(function($){
$.fn.scaccordion = function(options){
var defaults = {
// Variables Here
};
var options = $.extend(defaults, options);
$('div.accordionitem').addClass('active');
$('div.accordionitem').slideDown();
console.log('Add class: active to all div.accordionitem elements.')
// Click Event for item1: Open
$(this).find('div.accordionitem.item1').on('click', function (e) {
e.preventDefault();
console.log('Accordion Item 1 Clicked');
if ($('div.accordionitem.item1').hasClass('active')) {
$('div.accordionitem.item1 div.accordion_content').slideUp();
$('div.accordionitem.item1').removeClass('active');
} else {
$('div.accordionitem.item1 div.accordion_content').slideDown();
$('div.accordionitem.item1').addClass('active');
}
});
// Click Event for item2: Open
$(this).children('div.accordionitem.item2').on('click', function (e) {
e.preventDefault();
console.log('Accordion Item 2 Clicked');
if ($('div.accordionitem.item2').hasClass('active')) {
$('div.accordionitem.item2 div.accordion_content').slideUp();
$('div.accordionitem.item2').removeClass('active');
} else {
$('div.accordionitem.item2 div.accordion_content').slideDown();
$('div.accordionitem.item2').addClass('active');
}
});
// Click Event for item1: Open
$(this).children('div.accordionitem.item3').on('click', function (e) {
e.preventDefault();
console.log('Accordion Item 3 Clicked');
if ($('div.accordionitem.item3').hasClass('active')) {
$('div.accordionitem.item3 div.accordion_content').slideUp();
$('div.accordionitem.item3').removeClass('active');
} else {
$('div.accordionitem.item3 div.accordion_content').slideDown();
$('div.accordionitem.item3').addClass('active');
}
});
};
})(jQuery);
$('div.taccholder').scaccordion();
Это определенно сделал трюк! Это так. Работает как шарм. – Pegues
@ScriptsConnect, если ответ вам помог, пожалуйста, выберите его как лучший ответ! –
Готово. Извините, я забыл об этом. Я попал только вверх. Теперь галочка зеленая! – Pegues