Re: [ js ] 如何disable上一層的事件

看板Ajax作者 (小犬)時間15年前 (2010/07/26 16:43), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《knives ()》之銘言: : 我的Html是這樣 : <div id="Lv1"> : <div id="Lv2"> : </div> : </div> : 我同時在Lv1、Lv2都有加上click事件 : 可是我希望Lv2按了之後,不要觸發上一層的事件 : 我在Lv2的事件 function 後面有加上 return false; : 但是Lv1的事件依然被呼叫了 : 請問要怎麼用jquery暫時disable Lv1的事件 : 謝謝 $("#Lv2").click(clickLv2); function clickLv2(event) { // Do something... event.stopPropagation(); } 關鍵點: 1. jQuery 的 click 會把「瀏覽器問題修正過」的 event 當成參數傳進你指定的函式 2. stopPropagation(); 是 W3C DOM 標準的 Event 函式之一 指「阻止 Event 往父元素傳遞(bubbling) 雖然IE不支援這個函式,但jQuery偷偷幫你修好了 如果您要使用 onclick 而非 jQuery 的 Event 功能的話 就需要自己解決 IE 的問題囉 QQ jQuery 在 Event 方面作了很多瀏覽器修正,請多愛用 QQ --- 另外據說 .live() 不支援 stopPropagation(); ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.1.126 ※ 編輯: ybite 來自: 61.225.1.126 (07/26 16:46)

07/26 16:50, , 1F
請問clickLv2(event) 裡面的event可以不要寫嗎,因為我有另
07/26 16:50, 1F

07/26 16:50, , 2F
外帶別的參數名稱
07/26 16:50, 2F

07/26 16:53, , 3F
還有我是寫onclick="ajaxget(url,ajaxid"),那裡面還是寫
07/26 16:53, 3F

07/26 16:53, , 4F
event.stopPropagation();嗎,還是沒有效果
07/26 16:53, 4F
Then, how about this,雖然看起來很醜 qq。 順便補充一點,這個應該要寫在$(document).ready裡。 <script type="text/javascript"> $(document).ready(function() { // ... $("#Lv2").click(function(event) { ajaxget(url, ajaxid); event.stopPropagation(); }); }); </script> 一個很大的問題是:你的url和ajaxid是從哪來的,是怎麼存的? 如果他是存在 JavaScript 的變數裡,那麼它會是 Global varible。 如果是這樣的話這個作法就應該沒錯。 用onclick喔...微妙。因為對IE而言,你要用 window.event.cancelBubble = true 來達到相同效果,為了處理這件事情HTML Code會很難看qqqqq ※ 編輯: ybite 來自: 61.225.1.126 (07/27 02:53)
文章代碼(AID): #1CJKhBQU (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1CJKhBQU (Ajax)