事件冒泡javascript
事件冒泡是個很常見的問題,不過我以前沒據說過,因此這裏只是作個筆記,若是瞭解事件冒泡,並清楚如何處理的,能夠直接跳過這篇文章。下面咱們看下這面這demo,點擊紅色區域,會彈出1,點擊灰色,會彈出2。java
$("#div1").click(function(){ alert(1); }); $("#div2").click(function(){ alert(2); });
處理辦法其實很簡單,有兩種,一種就是「e.stopPropagation();」,另一種就是「return false;」。spa
$("#div1").click(function(){ alert(1); }); $("#div2").click(function(e){ e.stopPropagation(); alert(2); });
或者:blog
$("#div1").click(function(){ alert(1); }); $("#div2").click(function(e){ alert(2); return false; });
兩種解決辦法的區別就是,return false必須放在方法最後,否則以後的代碼也就不執行了,也就是說,當你把return false放在最頭部的時候,不只阻止了事件往上冒泡,並且阻止了事件自己。事件
關於在EonerCMS裏哪裏會用到阻止冒泡呢,看下這張圖吧ip
因爲title區域的拖動事件執行順序是mousedown->mousemove,因此在title區域裏的最大化、最小化等按鈕,他們的事件雖然是click,但click默認也執行了mousedown,因此這裏須要先統一阻止冒泡。it
//組織冒泡,以前對窗口綁定過事件 obj.find("a").bind("mousedown",function(e){ e.stopPropagation(); });