0
Я создал базовый плагин для аккордеона. Мой код находится в моем файле accordion.js, который я включил сразу после включения библиотеки jQuery. Нет никакой проблемы с аккордеоном с этим кодом в файле accordion.js.Проблемы с моим плагином jQuery
(function($) {
$.fn.accordion = function(options) {
var settings = $.extend({
speed:300,
}, options);
return this.each(function() {
var $elm = $(this),
s = settings.speed;
$elm.on('click',function(e) {
$('.accordion-toggle').on('click', function(e){
$elm.each(function() {
if(!$(e.target).is(this)) {
$($elm.attr('data-target')).slideUp(s);
$(this).removeClass('active');
}
});
});
$($elm.attr('data-target')).slideToggle(s);
$elm.toggleClass('active');
e.stopPropagation();
});
});
}}(jQuery)); $(".accordion-toggle").accordion();
Но когда я начинаю с опции скорости со своей страницы, это происходит дважды.
$(".accordion-toggle").accordion({ speed: 500, });
В чем проблема?
Да, я знаю, что это сработает. Но его плагин - я видел, что обычно плагины инициируются из самого файла. – Smit
Вы запускаете свой плагин с помощью селектора классов. Обычно мы используем атрибут data, чтобы инициировать плагин из самого плагина. Я предлагаю вам подробнее изучить создание плагинов в jquery. Нельзя инициировать плагин с селектором классов в самом файле плагина. – Yalamber
Хорошо, поэтому я увижу больше примеров при разработке плагина. Можете ли вы предложить другие ресурсы, кроме https://learn.jquery.com/plugins/advanced-plugin-concepts/, чтобы основательно изучить основы - с хорошим объяснением? а также - что можно сделать в этом случае? – Smit