js事件相互触发,死循环了

一只小桃子 发布于 2016/06/23 18:33
阅读 725
收藏 0

写了两个并排的div,里面是前后对比的东西,所以希望第一个div滚动的时候,第二个div同步滚动。然后写了一段代码直接蒙逼了。a的滚动事件里,让b滚动,但是b滚动的时候又会让a滚动,循环相互触发滚动事件。我让他滚动之前取消事件也不行。

$(function(){
		$('#fPanel').on("scroll",synA);
		$('#aPanel').on("scroll",synF);
	});
	function synA(){
		$('#aPanel').off("scroll",synF);
		$('#aPanel').scrollTop($("#fPanel").scrollTop());
		$('#aPanel').on("scroll",synF);
	}
	function synF(){
		$('#fPanel').off("scroll",synA);
		$('#fPanel').scrollTop($("#aPanel").scrollTop());
		$('#fPanel').on("scroll",synA);
	}



加载中
0
一只小桃子
一只小桃子

这样加了个延时 好多了

$(function(){
        $('#fPanel').on("scroll",synA);
        $('#aPanel').on("scroll",synF);
    });
    function synA(){
        $('#aPanel').off("scroll",synF);
        $('#aPanel').scrollTop($("#fPanel").scrollTop());
        setTimeout(function(){
        	$('#aPanel').on("scroll",synF);
        },100);
    }
    function synF(){
        $('#fPanel').off("scroll",synA);
        $('#fPanel').scrollTop($("#aPanel").scrollTop());
        setTimeout(function(){$('#fPanel').on("scroll",synA);},100);
    }



0
tinshen
tinshen

你的思路就是错的。

在滚动的时候计算A和B与顶部的距离,然后不就简单了么。

返回顶部
顶部