@HelpMeeee

Почему this не работает в функции?

Добрый день!
Создавал вопрос по поводу свайпа. На сайте есть код, который подгружает гифку в контейнер при наведении. Если этот код вставить в функцию, которая отслеживает свайп для телефонов она перестает работать. Создавал вопрос, сказали, что this не тот находит, но как найти тот? Кто знает как найти правильный this?)
Вот сам -
function detectswipe(el,func) {
		  swipe_det = new Object();
		  swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0;
		  var min_x = 30;  //min x swipe for horizontal swipe
		  var max_x = 30;  //max x difference for vertical swipe
		  var min_y = 50;  //min y swipe for vertical swipe
		  var max_y = 60;  //max y difference for horizontal swipe
		  var direc = "";
		  ele = document.getElementById(el);
		  ele.addEventListener('touchstart',function(e){
		    var t = e.touches[0];
		    swipe_det.sX = t.screenX; 
		    swipe_det.sY = t.screenY;
		  },false);
		  ele.addEventListener('touchmove',function(e){
		    e.preventDefault();
		    var t = e.touches[0];
		    swipe_det.eX = t.screenX; 
		    swipe_det.eY = t.screenY;    
		  },false);
		  ele.addEventListener('touchend',function(e){
		    //horizontal detection
		    if ((((swipe_det.eX - min_x > swipe_det.sX) || (swipe_det.eX + min_x < swipe_det.sX)) && ((swipe_det.eY < swipe_det.sY + max_y) && (swipe_det.sY > swipe_det.eY - max_y) && (swipe_det.eX > 0)))) {
		      if(swipe_det.eX > swipe_det.sX) direc = "r";
		      else direc = "l";
		    }
		    //vertical detection
		    else if ((((swipe_det.eY - min_y > swipe_det.sY) || (swipe_det.eY + min_y < swipe_det.sY)) && ((swipe_det.eX < swipe_det.sX + max_x) && (swipe_det.sX > swipe_det.eX - max_x) && (swipe_det.eY > 0)))) {
		      if(swipe_det.eY > swipe_det.sY) direc = "d";
		      else direc = "u";
		    }

		    if (direc != "") {
		      if(typeof func == 'function') func(el,direc);
		    }
		    direc = "";
		    swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0;
		  },false);  
		}
		console.log('1')
		let elem = document.getElementById('hover_tumb');
		detectswipe('hover_tumb', myfunction.bind(elem));
		function myfunction(el,d) {
			console.log('2')
		  $(".active-prev").remove();
    	$(".preloders").remove();
    	if ($(this).attr("data-gif")) {
        $(this).parent().append('<img src="http://site.com/loader.gif" width="100%" height="100%" class="preloders">');
        $(this)
            .parent()
            .append('<video class="active-prev" onloadeddata="$(\'.preloders\').remove();" src="' + $(this).attr("data-gif") + '" autoplay loop muted></video>');
    }
		}
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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