簡單說下事件委托與阻止冒泡
html:
<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:
$("ul[data-type='cityPick']").on('click',function(){ alert("父元素ul被點擊"); }); $("ul[data-type='cityPick']").on('click','li',function(){ alert("子元素li被點擊"); });
當點擊具體的li元素時,發現ul的事件也被觸發了,這是我們不想看到的。
解決:
$("ul[data-type='cityPick']").on('click',function(){ alert("父元素ul被點擊"); }); $("ul[data-type='cityPick']").on('click','li',function(e){ e.stopPropagation();//阻止冒泡 alert("子元素li被點擊"); });
加一句阻止冒泡即可。