问答详情
源自:5-3 卸载事件off()方法

关于n的次数问题 ???? var n = 0; //绑定事件 $(".aaron:last").on('mousedown mouseup', function(e) { $(this).text( '触发类型:' + (e.type) + ",次数" + ++n) ++n; })

为什么点击后松开 n是3而不是2???

当我写这样的时候,显示的n的结果是2

$(this).text( '触发类型:' +  (e.type) + ",次数" + ++n)


老师的源码写这样的时候,显示的n的结果是3。结尾多了++n 是想说明什么?

 $(this).text( '触发类型:' +  (e.type) + ",次数" + ++n) ++n;


<h4>测试一</h4>

    <div class="left"> 

        on('mousedown mouseup')

        <div class="aaron">点击触发</div>

    </div>

    <button>点击销毁所有事件off</button>

    <script type="text/javascript">

    var n  = 0;

    //绑定事件

    $(".aaron:last").on('mousedown mouseup', function(e) {

        $(this).text( '触发类型:' +  (e.type) + ",次数" + ++n)

        ++n;

    })


    //删除事件

    $("button:last").click(function() {

        $(".aaron:last").off()

    })

   

    </script>


提问者:淡水狗 2017-07-17 17:58

个回答

  • 沫荼
    2017-07-17 18:26:49
    已采纳

    你的顺序有些问题,先是n==1,显示,然后n==2,这都是mousedown事件的执行过程。

    $(this).text( '触发类型:' +  (e.type) + ",次数" + ++n)

            ++n;

    仔细看你的源码,你再++n一次之后就输出了,所以在显示了1之后mousedown事件还没有结束,会接着执行++n;之后才会结束,这时候n==2。之后你松开了鼠标触发了mouseup事件。这时也是先执行$(this).text( '触发类型:' +  (e.type) + ",次数" + ++n)这句。所以显示的是(在n==2之后)++n的值也就是3。之后执行++n;n==4结束mouseup事件。


  • qq_善哉善仔_0
    2018-10-22 10:51:36

    先是n==0,不是1

  • 沫荼
    2017-07-17 18:02:53

    当你按下鼠标时触发mousedown,++n,n==1,显示1,之后++n,n==2,松开鼠标时触发mouseup,++n,n==3,显示3,之后++n,n==4.