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

刚开始点击body空白处并没有效果~

刚开始的时候跟很多人遇到的问题一样,那就是点击body空白处的时候,并没有任何反应。但是如果先点击button之后,再点击body空白处就有效果了。很困惑为什么会这样?从代码上看明显是给body元素绑定了click事件,那为什么刚开始点body的空白处没效果呢?

偶然间看到有大神回复说是因为刚开始的时候body的高度只到button下面为止,点击button下面的空白是没效果的,需要点击button后面的空白才会有效。试了一下,发现确实是这样,初想一下感觉貌似确实是这个道理。但再深一步的验证下,发现貌似又不是这样。验证方法如下:

            ”给body加上background-color“

发现整个浏览框(不止是button,还包括button下面的所有空白处)都有背景色,证明刚开始body的高度并不是只到button下面为止。这时我就很纳闷了~到底该如何理解?很困惑~望各位大神指导~

正在回答

9 回答

很好理解吧。给body增加个样式。就知道body的位置在哪里了。js代码中的对象是body,是对body的点击触发事件的,所以你点击body以外的区域是没有反应的,而在body区域中的随处一个地方点击都是会触发事件。

http://img1.sycdn.imooc.com//593910e8000168ce04050111.jpg

http://img1.sycdn.imooc.com//593910e90001d2f004010245.jpg


0 回复 有任何疑惑可以回复我~

楼上不知后觉大兄弟正解

0 回复 有任何疑惑可以回复我~

楼上正解

0 回复 有任何疑惑可以回复我~

上面的解释都有点问题,你问到的大神给你的回复是正确的,至于为什么会出现你最后的这个疑惑,这个问题就牵扯到了对<body>和<html>这两个标签的理解。

为什么你给body设置颜色以后,浏览器的背景全都会变成红色?

因为此时html标签没有被激活,此时的body成了根节点的节点,它的背景颜色被浏览器捕获,所以你看到的页面全为红色是浏览器的背景色。,再说一下,是浏览器的背景色。

当你给html标签设置背景色为绿色后,会发现,浏览器的背景颜色变成了绿色,而红色只覆盖到button标签下面,因为此时浏览器捕获到的根节点的节点是html,所以它的背景色就成了浏览器的背景色。

这就很容易理解为什么点击button下面的部分的时候没有反应,而点击上面的部分div就会出现。

2 回复 有任何疑惑可以回复我~

我又来了,信不信这回好使。这个和 <script type="text/javascript">的位置有关,你写成外联就会完全好使了,因为写在body里是随着那些页面元素一起加载的,他后面的空白是不受那个javascript函数的控制,写在body里的javascript函数只对前面的页面元素有效。

0 回复 有任何疑惑可以回复我~

用这个<script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js">点哪都没用。用这个<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js">才是你说的“蓝色区域的click都是有效的”。应该是它的原因。——火狐浏览器

0 回复 有任何疑惑可以回复我~
#1

gaoboss 提问者

我用Chrome 版本:"51.0.2704.103 m" 示例中的script的链接是可以直接用的 蓝色区域的click是有效的~
2017-01-16 回复 有任何疑惑可以回复我~

on()绑定事件  body中包含bottom控件  则按钮可以将它们的 Click 事件转发给包含控件。这样,按钮实现绑定控件定义的自定义功能   我是这样认为的  不知道对不对

0 回复 有任何疑惑可以回复我~
#1

gaoboss 提问者

其他教程上关于on()的解释:"on() 方法在被选元素及子元素上添加一个或多个事件处理程序。"
2017-01-16 回复 有任何疑惑可以回复我~

经验证,发现下图中蓝色区域的click都是有效的,红色区域的部分click都是无效的~

http://img1.sycdn.imooc.com//587748c10001346d03350198.jpg

0 回复 有任何疑惑可以回复我~

点击有效标签,包括空白标签,才能激发 $body.on('click', function(),

http://img1.sycdn.imooc.com//587742710001dee402490152.jpg

你点击最左边的红色区域,就不会激发$body.on('click', function(),,因为那里不是默认的空白标签,但是右边就可以,因为那里默认

0 回复 有任何疑惑可以回复我~
#1

gaoboss 提问者

好像并不是这样,如果点击button左边的红色区域也是有效果的~
2017-01-12 回复 有任何疑惑可以回复我~
#2

gaoboss 提问者

貌似直接使用实例中的源码时,点击button左侧空白是没有效果,但是我给button加了一个外边距的效果,把button左侧的空白区域变大了之后,点击button左侧就会有效果~~~ 搞晕了,刚开始学前端,只知其表面,不知道深层原理,确实容易晕~
2017-01-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

刚开始点击body空白处并没有效果~

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号