js 事件的冒泡和委託
簡單說下事件委託與阻止冒泡
html:
1
2
3
4
5
6
7
8
9
10
|
< ul class = "clearfix" data-type = "cityPick" > < li class = "active_sort_opts" data-id = "0" >全部</ li > < li data-id = "88" >紐約</ li > < li data-id = "119" >洛杉磯</ li > < li data-id = "138" >拉斯維加斯</ li > < li data-id = "84" >夏威夷</ li > < li data-id = "120" >舊金山</ li > < li data-id = "105" >奧蘭多</ li > < li data-id = "118" >西雅圖</ li > </ ul > |
js:
1
2
3
4
5
6
|
$( "ul[data-type='cityPick']" ).on( 'click' , function (){ alert( "父元素ul被點選" ); }); $( "ul[data-type='cityPick']" ).on( 'click' , 'li' , function (){ alert( "子元素li被點選" ); }); |
當點選具體的li元素時,發現ul的事件也被觸發了,這是我們不想看到的。
解決:
1
2
3
4
5
6
7
|
$( "ul[data-type='cityPick']" ).on( 'click' , function (){ alert( "父元素ul被點選" ); }); $( "ul[data-type='cityPick']" ).on( 'click' , 'li' , function (e){ e.stopPropagation(); //阻止冒泡 alert( "子元素li被點選" ); }); |
加一句阻止冒泡即可。
delegateTarget
屬性用於返回負責繫結當前被呼叫的事件處理函式的DOM元素。
delegateTarget
屬性最常用於事件函式delegate()、 on()新增的委託事件中,用於返回受委託的DOM元素。
對於bind()、 live()、 click()等"非委託"事件函式而言,該屬性的返回值等於currentTarget屬性的值,也就是返回事件冒泡階段中的當前DOM元素。
該屬性屬於jQuery的Event
物件(例項)。
語法
jQuery 1.7 新增該屬性。
eventObject.delegateTarget
返回值
delegateTarget
屬性的返回值是Element型別,返回"受委託"繫結當前事件處理函式的的DOM元素。
示例&說明
// 為id為element的元素中的所有span元素繫結click事件 $("#element").on( "click", "span", function(event){ // event.delegateTarget 就是id為element的DOM元素 // this 就是當前觸發事件的span元素 alert( event.delegateTarget === this); // false } ); // 為id為element的元素中的所有span元素繫結click事件 $("#element span").bind( "click", function(event){ // event.delegateTarget 就是當前觸發事件的span元素 // this 就是當前觸發事件的span元素 alert( event.delegateTarget === this ); // true } );
相關文章
- 事件的捕獲、冒泡、委託事件
- JS事件流和事件委託JS事件
- js中的事件委託JS事件
- Js 事件原理與事件委託JS事件
- 事件模型和事件委託事件模型
- 對js事件委託的瞭解JS事件
- js--事件流、事件委託、事件階段JS事件
- c# 委託和事件C#事件
- 理解js的事件冒泡和事件捕獲JS事件
- 事件委託事件
- 委託與事件-委託詳解(一)事件
- JavaScript 中的閉包和事件委託JavaScript事件
- 關於js事件冒泡和事件捕獲JS事件
- .NET委託,事件和Lambda表示式事件
- wpf移除事件委託事件
- 詳解C#委託和事件(二)C#事件
- 詳解C#委託和事件(一)C#事件
- 委託與事件-事件詳解(二)事件
- JQuery7:事件委託jQuery事件
- C# - 委託與事件C#事件
- C#委託與事件C#事件
- 原生js如何阻止事件冒泡JS事件
- 徹底搞清楚c#中的委託和事件C#事件
- JS中的事件順序(事件捕獲與冒泡)JS事件
- C# 委託原理刨析,外加和事件對比C#事件
- 事件委託詳解最新版事件
- 詳解C#委託與事件C#事件
- C#基礎之委託,事件C#事件
- jquery中如何使用事件委託?jQuery事件
- 事件的冒泡事件
- 提個js問題:為何js事件委託寫在非同步中無效?JS事件非同步
- 來個簡單的事件委託 冒個泡事件
- C# 委託(delegate)、泛型委託和Lambda表示式C#泛型
- dotnet 委託的實現解析(2)開放委託和封閉委託 (Open Delegates vs. Closed Delegates)
- C#規範整理·泛型委託事件C#泛型事件
- C#.Net築基-解密委託與事件C#解密事件
- # 委託
- 委託
- JavaScript 事件冒泡JavaScript事件