Chernichko
@Chernichko
Учусь.

Как запустить одну и туже функцию одновременно с разными входными данными?

На странице есть 3 блока с tab-вкладками. По сути они одинаковые, но в каждой вкладке выводятся определенные товары.
Нужно сделать так, чтобы вкладки переключались автоматически. Получается во всех 3х блоках одновременно.

setInterval(loopTabsBestPrice, 5000);
setInterval(loopTabsHitSale, 5000);

function loopTabsBestPrice(){
	first = $('.bestprice ul li:first').get(0);
	last = $('.bestprice ul li:last').get(0);
	activ = $('.bestprice ul li.active').get(0);
	next  = $('.bestprice ul li.active').next().get(0);
	if(activ == last) next = first;
	$(activ).removeClass('active');
	$(next).addClass('active');
	switchTabsListTov(next); //функция, которая обновляет данные во вкладках.
}

 function loopTabsHitSale(){
 	first = $('.hitsalу ul li:first').get(0);
 	last = $('.hitsale ul li:last').get(0);
 	activ = $('.hitsale ul li.active').get(0);
 	next  = $('.hitsale ul li.active').next().get(0);
 	if(activ == last) next = first;
 	$(activ).removeClass('active');
 	$(next).addClass('active');
 	switchTabsListTov(next); //функция, которая обновляет данные во вкладках.
 }


Но получается так, что если активность вкладок меняется в каждом блоке, то данные активной вкладки меняются только у последнего блока (это понятно почему).

Мне необходимо запустить одну и туже функцию 3 раза одновременно в разными входными данными.
Так чтобы не делать одну и туже функцию switchTabsListTov под разными названиями одно и тоже там.
Возможно ли такое сделать?
если нет, то как изменить код, чтобы вес работало корректно?)
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 1
Alovinglol
@Alovinglol
front-end developer
Если я правильно вас понял, то это должно вам помочь:
function tabsActions(myElement){
 	first = $(myElement).find('ul li:first').get(0);
 	last = $(myElement).find('ul li:last').get(0);
 	activ = $(myElement).find('ul li.active').get(0);
 	next  = $(myElement).find('ul li.active').next().get(0);
 	if(activ == last) next = first;
 	$(activ).removeClass('active');
 	$(next).addClass('active');
 	switchTabsListTov(next); //функция, которая обновляет данные во вкладках.
 }

var hitsalу = $('.hitsalу ');
var bestprice = $('.bestprice');

setInterval(tabsActions.bind(undefined, hitsalу), 5000);
setInterval(tabsActions.bind(undefined, bestprice), 5000);


Если не поможет, пришлите наглядный пример в песочнице.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы