2019-06-19 事件委托 整屏滚动

1.事件委托

$(function(){

/*

给每个li绑定事件,一共绑定了8次,性能不高

$('.list li').click(function() {

alert($(this).html());

});

*/

/*

事件委托:方法delegate,只绑定一次事件,冒泡触发

参数:

selector选择器:写入ul下面的所有要发生事件的元素,多个元素用空格隔开,例如‘li a span’

eventType事件

function要执行的操作

$('.list').delegate('li', 'click', function() {

//$(this)指发生事件的子集,即每个li

alert($(this).html());

//全部取消委托

$('.list').undelegate();

});

})

2.整屏滚动

  $(function(){


            var $h = $(window).height();//获取浏览器页面默认高度

            var len = $('.pages').length;

            var $points = $('.points li');//选上滚动点并赋值给变量

            var $pages = $('.pages');

            var nowscreen = 0;

            var timer = null; //设定一个定时器,消除用力滚动滑轮划多屏的效果


            $pages.eq(0).addClass('moving');



            $('.pages').css({height:$h});//把滚动页面的高度设为页面默认高度



            //mousewheel插件设定dat的值:-1是向下滑动,1是向上滑动,

            $(window).mousewheel(function(event,dat){


                //清掉前面刚刚开的定时器:在200毫秒之内如果多次滚动,前面的都会清掉,只保留最后一个滚动

                clearTimeout(timer);


                // 最新的一次定时器,200毫秒内的最后一个滚动才会触发下面的事件,setInterval是反复执行,setTimeout执行一次

                timer = setTimeout(function(){


                    if(dat==-1)

                    {

                        nowscreen++;


                   //本例只有5屏,所以nowscreen区间为0-4,nowscreen自加大于4时,赋值为4,不再往下滑

                        if(nowscreen>len-1){

                            nowscreen=len-1;

                        }

                    }

                    else

                    {

                        nowscreen--;


                        if(nowscreen<0){

                            nowscreen=0;

                        }

                    }


                   //向上滚屏时为负数,也就是-$h*nowscreen,300毫秒是延迟滚动,增强视觉体验

                    $('.pages_con').animate({top:-$h*nowscreen},300);


                    //这里表示当选上某屏时,就把li加上active属性,并且同时去掉其他li的acive属性

                    $points.eq(nowscreen).addClass('active').siblings().removeClass('active');



                    //给每一屏加动画效果,200毫秒是定时器的设定

                    $pages.eq(nowscreen).addClass('moving').siblings().removeClass('moving');


                },200);

            })


            //实现点击页面右边的列表点也能到相应页面屏的效果

            $points.click(function(){


                //实现跳到指定屏

                $(this).addClass('active').siblings().removeClass('active');

                $('.pages_con').animate({top:-$h*$(this).index()},300);


                //指定屏加动画

                $pages.eq($(this).index()).addClass('moving').siblings().removeClass('moving');


            })




        })


    

你可能感兴趣的:(2019-06-19 事件委托 整屏滚动)