为了账号安全,请及时绑定邮箱和手机立即绑定

带有事件源event的事件,如何多个事件调用?

带有事件源event的事件,如何多个事件调用?

白衣染霜花 2018-11-06 13:14:13
功能:在做移动端页面,点击按钮弹出灰色的遮罩登录框,这时也弹出遮罩,需让后面的body不能再滚动了,效果如下:代码:html        <p class="btn">点击出现弹框</p>       <div id = "box">          <p>弹框主体</p>       </div>       <div>遮罩</div>要实现移动端,出现弹框时页面不能再滚动,用touchmove,阻止默认事件实现js问题描述弹框出现时绑定的touchmove事件,我想在关闭弹框时,把那个不允许滚动的事件取消,但是,如果用我上面的写法,浏览器不会知道on 和 off 事件是指同一个的,,,于是我把阻止页面的function拎出来了函数stopTouchMove,on和off都把他执行,还是不行!    var stopTouchMove = function(param){        param.preventDefault();    }        //出现弹框,不许滚动    $(document).on('touchmove',function(e){                stopTouchMove(e);            });                //隐藏弹框,再次滚动    $(document).off('touchmove',function(e){                stopTouchMove(e);            });问题:1、这个方法有什么问题?如何解决这种要传入事件源本身的匿名函数,都要调用的情况?2、是否有手机端,有其他的方法实现此功能?
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

你都提到了匿名函数,那么你改后的方案还是匿名函数呀

//出现弹框,不许滚动

    $(document).on('touchmove',function(e){

                stopTouchMove(e);

            });

            

    //隐藏弹框,再次滚动

    $(document).off('touchmove',function(e){

                stopTouchMove(e);

            });

你改的这里依然是匿名函数。。。
你离答案仅仅差一步而已
改成

$(document).on('touchmove', stopTouchMove)

$(document).off('touchmove', stopTouchMove)

就可以了

查看完整回答
反对 回复 2018-12-05
  • 1 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信