对于指定区块div,如何区分区块内的点击 和 区块外的点击?

  需求:对于区块div内点击事件, 需要展示区块内的附属操作区块,对于区块外的点击, 需要将前面说的附属操作区块隐藏掉。

  分析:对于一般的HTML控件,有标准的js事件接口, focus和blur,来实现类似效果, 在focus中添加显示附属控件操作,
在blur中隐藏掉。例如 文本输入框, 和 image 类型的input,
但是对于设计出的样式不能通过这类控件来表达时候,就需要使用div框来设计布局,虽然HTML控件具有更好的accessibility。

    技术思路:事件event在DOM树中是不断冒泡,向上层传递的,直到DOM根节点document停止,在事件发生或者传递的过程中,
任意传递路径上的DOM元素的事件处理函数, 中都可以终止事件扩散(propagation)。

  验证冒泡传递消息机制,如下代码,执行效果,点击“click me”,事件踪迹会先打印 me is clicked,然后打印document is
clicked。


 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
5 </script>
6 </head>
7 <body>
8 <div id="target_div" style="width:200px;height:200px;background:yellow;margin:auto">click me</div>
9 <br/>
10 <br/>
11 <br/>
12 clicked event bubble up trace:
13 <div id="eventClickLog"></div>
14 <script>
15 $("#target_div").click(function(event){
16 $("<div/>").append("me is clicked")
17 .appendTo($("#eventClickLog"));
18 });
19
20 $(document).click(function(event){
21 $("<div/>").append("document is clicked")
22 .appendTo($("#eventClickLog"));
23 });
24 </script>
25 </body>
26 </html>

  根据JQuery官方文档 http://api.jquery.com/event.stoppropagation/ 介绍
如下接口可以prevent事件向上传递

event.stopPropagation()

  或者使用 return false 来实现相同的效果,这样点击区块内,只有打印 me is clicked, 点击区块外,只打印document is
clicked,可满足区分区块点击事件区域的需求。给出拦截效果代码:


 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
5 </script>
6 </head>
7 <body>
8 <div id="target_div" style="width:200px;height:200px;background:yellow;margin:auto">click me</div>
9 <br/>
10 <br/>
11 <br/>
12 clicked event bubble up trace:
13 <div id="eventClickLog"></div>
14 <script>
15 $("#target_div").click(function(event){
16 $("<div/>").append("me is clicked")
17 .appendTo($("#eventClickLog"));
18
19 /* return false or stopPropagation to prevent parent event handler executed. */
20 //return false;
21 event.stopPropagation();
22 });
23
24 $(document).click(function(event){
25 $("<div/>").append("document is clicked")
26 .appendTo($("#eventClickLog"));
27 });
28 </script>
29 </body>
30 </html>

  

  

对于指定区块div,如何区分区块内的点击 和 区块外的点击?,码迷,mamicode.com

时间: 2024-12-15 05:49:00

对于指定区块div,如何区分区块内的点击 和 区块外的点击?的相关文章

使用jQuery加载html页面到指定的div

一.jQuery加载一个html页面到指定的div里 把a.html里面的某一部份的内容加载到b.html的一个div里.比如:加载a.html里面的<div id=“row"></div>这个div里面的所有内容加载到b.html的这个div里<div id="content"></div> 用jquery ajax 可以实现假设 a.html 和b.html在同一目录 b.html 1 <script > 2 $

div块级元素内文字换行word-wrap, word-break,white-space。

word-wrap: normal; || word-break: normal; 当word-wrap或者word-break为normal时,也就是浏览器的默认设置时. 换行规则是这样的: 情景一: 当一个单词在行尾不能完整容纳时,会自动将这个单词换到下一行,示例如下. 情景二: 当一个长长的单词在行尾不能完整容纳,并且换行后还是不能容纳时,单词就会溢出容器,示例如下. word-wrap: break-word; 当word-wrap设置为break-word时, 换行规则如下:  情景一

给指定的div增加滚动条

这次的需求是给一个指定的div(里面有个table表格)增加上下.左右的滚动条 通过查找资料后找到了一个可用的方法,代码如下: <!--div比table大小要小才会显示--> <div style="overflow-x: auto; overflow-y: auto; height: 100px; width:200px;"> <table id="table" border="1" align="ce

将所有div下的所有li的名字设为&quot;哈哈&quot;,当点击的时候设为&quot;我被点击了&quot;,其余没有点击的依然设为“哈哈”

<1> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title&

exchange 2010 server内网邮箱突然不能收发外网邮件的问题分析解决办法

环境是,域控+exchange2010server+edge边缘服务器的邮件系统. 故障现象:某个内网邮箱以前可以收发外网邮件,现在突然不能收发外网邮件了. 故障分析:分析最近对服务器做了那些操作. 解决办法:原来是自己更改了设置,没有留意这个内网邮箱用户加了多个通讯组,通讯组有交叉,对这些通讯组设置禁止收发邮件的规则,把这个邮箱也给禁止了,增加了允许这个邮箱的邮件传输规则,故障排除.

ios给NSMutableDictionary循环赋值的两种方式,在循环内初始化NSMutableDictionary和在循环外初始化NSMutableDictionary有何区别?(已解决)

NSMutableArray * arrayName = [NSMutableArray array]; NSMutableArray * array = [NSMutableArray array]; [array removeAllObjects]; for (int i = 0; i< 10; i++) { NSString * str = [NSString stringWithFormat:@"name%i",i]; [arrayName addObject:str];

都div在所有li的html()值被设置&amp;quot;哈哈&amp;quot;,当点击设置&amp;quot;我被点击&amp;quot;,其余的还是不点击设置“哈哈”

<1> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title&

c++学习笔记之基础---类内声明函数后在类外定义的一种方法

在C++的“类”中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数体. } 这个是在类内声明函数后在类外定义的一种方法!如果不加"类名::"的话,编译系统就不会知道你的函数属于哪个类;另外,这样定义函数一定要在类中声明之后,说明它是类的成员函数才可以!在类内声明的时候就不需要::了,直接 返回值类型 函数名(参数表) 就可以了!

juniper srx 240 cluster 内网服务器端口发布到外网配置实例

========================================================================================================================-----------------------------------------内网地址端口发布到外网步骤-----------------------------------------------------set security address-bo