Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Использование $(this) в функциях (https://javascript.ru/forum/misc/70859-ispolzovanie-%24-v-funkciyakh.html)

Булат Азат улы 09.10.2017 21:41

рони,
а не могли бы подсказать ещё одну вещь с setTimeout - как обнулить счетчик? то есть, есть код, который написал выше (с setTimeout()). Он двигает блок с определенным интервалом. А при клике на кнопки вперед/назад, получается такая некрасивая вещь, когда слайд сразу после клика переходит на другую, так как после клика таймер не обнуляется.
Пробовал в функциях клика по "вперед/назад" в конце писать clearTimeout() - результата нет.

рони 10.10.2017 01:13

Булат Азат улы,
$(document).ready(function(){
var timer;
...click(function(){clearTimeout(timer) 

//...
timer =setTimeout(function(){

Булат Азат улы 10.10.2017 10:13

рони,
написал так, вот краткий код:
var slaidTimer;

$(".kuchuUn").click(function(){
	clearTimeout(slaidTimer); // вот чистка таймера
	
	if(transPoz <= -(slRasBlok.length * slRasBlokWidth - slRasBlokWidth)){
		transPoz = 0;
		slaidPoz.bind(this)(transPoz);
	}else{
		transPoz = transPoz - slRasBlokWidth;
		slaidPoz.bind(this)(transPoz);
	}
});

slaidTimer = setTimeout(function slaidTime(){
	var transBlok = $(".slaidContainer");
	if(transPoz <= -(slRasBlok.length * slRasBlokWidth - slRasBlokWidth)){
		transPoz = 0;
		transBlok.css("transform", "translateX("+transPoz+"px)");
	}else{
		transPoz = transPoz - slRasBlokWidth;
		transBlok.css("transform", "translateX("+transPoz+"px)");
	}
	slaidTimer = setTimeout(slaidTime, slaidInterval); // если тут переменную убрать - вообще как без изменений (без сброса),
//а если поставить - после клика таймер вообще перестает работать (слайды стоят на месте)
}, slaidInterval);

рони 10.10.2017 10:36

Булат Азат улы,
как вариант...
var slaidTimer;

$(".kuchuUn").click(function(){
  clearTimeout(slaidTimer);

  if(transPoz <= -(slRasBlok.length * slRasBlokWidth - slRasBlokWidth)){
    transPoz = 0;
    slaidPoz.bind(this)(transPoz);
  }else{
    transPoz = transPoz - slRasBlokWidth;
    slaidPoz.bind(this)(transPoz);
  }
});

function slaidTime(){
  clearTimeout(slaidTimer);
  var transBlok = $(".slaidContainer");
  if(transPoz <= -(slRasBlok.length * slRasBlokWidth - slRasBlokWidth)){
    transPoz = 0;
    transBlok.css("transform", "translateX("+transPoz+"px)");
  }else{
    transPoz = transPoz - slRasBlokWidth;
    transBlok.css("transform", "translateX("+transPoz+"px)");
  }
  slaidTimer = setTimeout(slaidTime, slaidInterval);
};
slaidTime();

$("#topBlok").mouseleave(slaidTime)

Булат Азат улы 12.10.2017 18:13

рони,
Спасибо большое!


Часовой пояс GMT +3, время: 05:12.