Co się o d razu rzuca w oczy to:
/***** global variables *****/
var initialPositions = 'blank';
var screenWidth = 'blank';
var previousClassFilter = 'blank';
oraz:
/***** private methods *****/
function getElementCurrentPosition(element) {
[...]
To wszystko sa globale (szczególnie ciekawe jest nazwanie globalnych funkcji prywatnymi metodami O_o ). Pozbądź się tego.
Także większość metod z konstruktora (wszystkie?) powinieneś wyrzucić do prototypu - inaczej tworzysz ich kopie z każdym utworzeniem obiektu.
Ogólnie to masz problem z widocznością zmiennych.
Kilka smaczków:
if (screenSize > 1200) {
numberOfElementsPerRow = elementsPerRowAllSizes.screenLg;
} else if (screenSize < 1200 && screenSize >= 992) {
numberOfElementsPerRow = elementsPerRowAllSizes.screenMd;
} else if (screenSize < 992 && screenSize >= 768) {
numberOfElementsPerRow = elementsPerRowAllSizes.screenSm;
} else if (screenSize < 768) {
numberOfElementsPerRow = elementsPerRowAllSizes.screenXs;
};
Po co Ci dwa warunki w else if?
? Nie lepiej:
if (screenSize > 1200) {
numberOfElementsPerRow = elementsPerRowAllSizes.screenLg;
} else if (screenSize >= 992) {
numberOfElementsPerRow = elementsPerRowAllSizes.screenMd;
} else if (screenSize >= 768) {
numberOfElementsPerRow = elementsPerRowAllSizes.screenSm;
} else {
numberOfElementsPerRow = elementsPerRowAllSizes.screenXs;
};
Pomijam już to, że pewnie da się tych ifów całkiem pozbyć.
typeof screenXs === 'undefined' || isNaN(screenXs)
=> !screenXs
$('.' + className).css('position', 'absolute');
$('.' + className).css('position', 'initial');
$('.' + className).css('display', displayType);
$('.' + className).css('position', 'absolute');
$('.' + className).css('position', 'initial');
Naprawdę pobierasz ten sam element za każdym razem i pojedynczo nadajesz mu style? Masz tak wszędzie w kodzie. Toż to zbrodnia (wydajność).
i = i + 1;
:D Nieźle podsumowuje to rozwlekłość kodu;)
Na plus ładne nazwy zmiennych i czytelność kodu.