Ajax 板


LINE

1. return false 是用來停止default action的 並不能停止bubbling 正確的停止bubbling的程式碼是 if (event.stopPropagation) event.stopPropagation(); event.cancelBubble=true; 2. 依據第二篇回文所述 → knives:還有我是寫onclick="ajaxget(url,ajaxid"),那裡面還是寫 07/26 16:53 → knives: event.stopPropagation();嗎,還是沒有效果 onclick="ajaxget(url,ajaxid)" 為寫在html中的 Inline event handlers(行內註冊事件處理函式) 事件處理函式的註冊方法共有三種 A.Inline event handlers(行內註冊事件處理函式) : 最古老的將執行段加在html元素的屬性中 B.Tranditional model(傳統模式) : 在分離的javascript中為要引發事件的元件指名處理函式 如下片段 <a href="xx.html" id="xx"> var x = document.getElementById('xx'); x.onclick = eventhandler eventhandler為一個function C.Advanced model(進階模式) : 分為W3C和Microsoft兩類 W3C下: x.addEventListener('click',eventhandler,false); Microsoft下: x.attachEvent('onclick',eventhandler); (以上事件註冊模式請參考ppk on javascript 7-c小節) 行內註冊模式的等價傳統模式程式碼為 Lv2.onclick = function () { ajaxget(url,ajaxid); } 在html中 屬性onclick = "xxxxxxx" 雙括弧中的內文 相當於在傳統模式的事件處理函式中了 因此我再嘗試將你的問題重新描述一遍 <div id="Lv1"> <div id="Lv2" onclick="ajaxget(url,ajaxid)"> </div> </div> 也就是我有一段行內註冊的碼 但是沒辦法獲取event物件 因此不知該怎麼關掉他的bubbling 而錯誤的用了關閉default action的return false; 要解決這個問題必須分成兩段思考 第一先把行內註冊翻譯成等價的傳統模式 寫好了傳統模式 再把他反推回去 <div id="Lv1"> <div id="Lv2" onclick="ajaxget(url,ajaxid)"> </div> </div> 相當於 Lv2.onclick = xx; function xx() { ajaxget(url,ajaxid); } 我要如何在沒有傳參數的event handler中得到event物件呢 答案是 事實上他有傳 在ie中無時無刻的window.event記載著event物件 而在W3C中雖然你的處理函式沒有參數 但是W3C依舊有傳 你可以用arguments[0]獲取event物件 在傳統模式只要把程式碼改成 Lv2.onclick = xx; function xx() { var w3cevt=(!!arguments.length)&&arguments[0]; //用arguments.length判斷是否有傳參數 有的話arguments[0]就是event物件 var event = w3cevt || window.event ; //如果沒有那麼就是ie的window.event了 ajaxget(url,ajaxid); //再加上停止bubbling的程式片段 if (event.stopPropagation) event.stopPropagation(); event.cancelBubble=true; } 得到等價的傳統模式程式碼後 我們再把他回覆成行內註冊模式 <div id="Lv1"> <div id="Lv2" onclick=" var w3cevt=(!!arguments.length)&&arguments[0]; var event = w3cevt || window.event; ajaxget(url,ajaxid); if (event.stopPropagation) event.stopPropagation(); event.cancelBubble=true; "> </div> </div> 以上 請問是否有了解 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.19.240 ※ 編輯: sk1765 來自: 61.59.19.240 (08/14 11:54)
1F:推 s25g5d4:好...恐怖 高手如雲的AJAX版 08/14 12:54
2F:推 s25g5d4:m文!收拉! (快推不然人家說我們看不懂 08/14 12:56
3F:→ grence:jQuery綁定的事件裡 return false = 取消預設跟停止buble 08/14 14:11
4F:→ grence:然後,如果可以…還是不建議把事件寫在 html裡 08/14 14:12
5F:→ TonyQ:那是 jQuery 的自定義行為。:3 08/14 15:01







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP