淡水狗
2017-07-17 17:58
为什么点击后松开 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>
你的顺序有些问题,先是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事件。
先是n==0,不是1
当你按下鼠标时触发mousedown,++n,n==1,显示1,之后++n,n==2,松开鼠标时触发mouseup,++n,n==3,显示3,之后++n,n==4.
jQuery基础(三)—事件篇
89997 学习 · 625 问题
相似问题
回答 1
回答 2