Re: [ js ] 如何disable上一層的事件
※ 引述《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
07/26 16:50, 1F
→
07/26 16:50, , 2F
07/26 16:50, 2F
→
07/26 16:53, , 3F
07/26 16:53, 3F
→
07/26 16:53, , 4F
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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章