jQuery Tabs Plugin
Las pestañas (tabs) son un elemento bastante común. Existen varias implementaciones de este elemento en Internet. Pero a menudo las pestañas (tabs) están sobrecargadas con código lleno de efectos que es poco probable que se necesiten en las tareas habituales. Por lo tanto, se decidió escribir pestañas simples, por así decirlo, “para mí”.
Este plugin fue escrito hace mucho tiempo y lo usé en mi trabajo. Actualmente, jQuery no se considera una solución moderna, pero hay muchos proyectos en los que aún se usa esta biblioteca. Quizás este plugin para pestañas (tabs) le resulte útil a alguien. Está claro que para que plugin funcione, jQuery debe estar conectado en el proyecto.
En uno de los artículos anteriores, vimos cómo escribir un plugin jQuery de manera general. Ahora veamos un ejemplo más específico.
HTML
<div class="tabs">
<div class="tabs__head">
<div class="tabs__name active">Tab 1</div>
<div class="tabs__name">Tab 2</div>
<div class="tabs__name">Tab 3</div>
</div>
<div class="tabs__body">
<div class="tabs__cont active">
1. Contents of the first tab
</div>
<div class="tabs__cont">
2. Contents of the second tab
</div>
<div class="tabs__cont">
3. Contents of the third tab
</div>
</div>
</div>
CSS
/* required styles */
.tabs__cont {
display: none; /* hide contents of the tabs*/
}
.tabs__cont.active {
display: block; /*display contents of the active tab*/
}
Tenga en cuenta: si cambia el nombre de la clase activa, también deberá cambiar el código CSS.
Inicialización
//init plugin
$(() => {
$('.tabs').simpleTabs();
});
También puedes utilizar otros selectores en lugar de los predeterminados. Es posible llamar a una devolución de llamada al hacer clic.
Inicialización con opciones
$(() => {
$('.tabs').simpleTabs({
title: '.othernametab', // tab title selector
content: '.othercontenttab', // tab content selector
cb: callbackFunction // callback function
activeClass: 'show'
});
});
Código plugin
$.fn.simpleTabs = function (options) {
const settings = $.extend({
title : '.tabs__name',
content: '.tabs__cont',
activeClass: 'active',
cb: ''
}, options);
const tabName = $(this).find(settings.title), // tab title selector
tabCont = $(this).find(settings.content), // tab content selector
callback = settings.cb,
tabsEl = this;
tabName.on('click', function () {
const active = $(this).hasClass(settings.activeClass); // is the tab title active?
if (!active) {
const i = $(this).index();
const activeEls = $(tabsEl).find(`.${settings.activeClass}`);
activeEls.each(function(){
$(this).removeClass(settings.activeClass);
});
$(this).addClass(settings.activeClass);
tabCont.eq(i).addClass(settings.activeClass);
if (callback) {
callback();
}
}
});
};
Puedes ver un ejemplo del uso plugin jQuery en Codepen: https://codepen.io/igorrybalko/pen/xbKVmOz
Publicaciones similares:
-
Temporizador de cuenta regresiva en JavaScript
A menudo, en los sitios que venden algo, se puede encontrar un temporizador de cuenta regresiva hasta una fecha determinada. Este tipo de script suele ser necesario para ...
-
Trabajar con cookies en JavaScript
Сookie (cookie web o cookie del navegador) es una cadena de información que puede almacenarse en un navegador y enviarse al servidor. El tamaño máximo para una cookie es...
-
Componente de acordeón Vue
Un plugin sencillo y ligero para el componente acordeón de Vue 3. Admite el registro global de plugins y el uso local de componentes. Escrito en TypeScript. El componente...
Leave a Reply