Performance improvements in other events

This commit is contained in:
Andros Fenollosa
2020-07-21 16:35:00 +02:00
parent dac40e8d61
commit 3fc6ff1c78
3 changed files with 20 additions and 9 deletions

View File

@ -60,13 +60,23 @@ document.addEventListener('DOMContentLoaded', () => {
return {'functionParent': functionParent, 'functionChild': functionChild, 'value': value, 'target': target};
}
/**
* Method that returns all validated elements filtered by an event
* return Array
*/
function getElementsValidatesByEvent(nameEvent) {
return [...elementsValidates].filter(element => {
return element.hasAttribute(nameEvent);
});
}
/**
* Method add events i-click
* return void
*/
function addEventClick() {
let eventClick = 'i-click';
return [...document.querySelectorAll(`[${eventClick}]`)].forEach((element) => {
return getElementsValidatesByEvent(eventClick).forEach((element) => {
let params = splitParams(element, eventClick);
switch(params.functionParent) {
case 'class':
@ -99,11 +109,12 @@ document.addEventListener('DOMContentLoaded', () => {
function addEventScroll() {
let eventScrollDown = 'i-scroll-down';
let eventScrollUp = 'i-scroll-up';
let elements = [...document.querySelectorAll(`[${eventScrollDown}]`)];
let elementsDown = getElementsValidatesByEvent(eventScrollDown);
let elementsUp = getElementsValidatesByEvent(eventScrollUp);
window.addEventListener("scroll", () => {
let posScroll = window.pageYOffset || document.documentElement.scrollTop;
// Scroll down
elements.forEach((element) => {
elementsDown.forEach((element) => {
if (posScroll > lastScrollTop) {
let params = splitParams(element, eventScrollDown);
switch(params.functionParent) {
@ -121,7 +132,7 @@ document.addEventListener('DOMContentLoaded', () => {
}
});
// Scroll up
[...document.querySelectorAll(`[${eventScrollUp}]`)].forEach((element) => {
elementsUp.forEach((element) => {
if (posScroll <= lastScrollTop) {
let params = splitParams(element, eventScrollUp);
switch(params.functionParent) {
@ -149,7 +160,7 @@ document.addEventListener('DOMContentLoaded', () => {
*/
function addEventHover() {
let eventHover = 'i-hover';
return [...document.querySelectorAll(`[${eventHover}]`)].forEach((element) => {
return getElementsValidatesByEvent(eventHover).forEach((element) => {
let params = splitParams(element, eventHover);
switch(params.functionParent) {
case 'class':