作者chrisjohn214 (咪咪獎)
看板Ajax
標題[問題] onclick eventHander移不掉
時間Thu Jan 23 17:10:25 2014
請問一下,像下面這段code,當使用者點擊連結時
有辦法把被點擊連結的event handler移除,然後再把它加回去嗎?
<html>
<head>
<link rel="stylesheet" href="css/puzzle.css" type="text/css" />
<script src="scripts/jquery.js" type="text/javascript"></script>
<script src="scripts/test.js" type="text/javascript"></script>
</head>
<body>
<div id="parent">
<a href="#" class="link1">link1</a>
<a href="#" class="link2">link2</a>
<a href="#" class="link3">link3</a>
</div>
<body>
</html>
==
$(
function() {
$("#parent").on("click", "a", function() {
linkClick(this);
});
function linkClick(link) {
$(link).off("click"); //試過這樣關閉,但不成功
console.log(link);
}
}
)
換句話說,怎麼樣在linkClick裡把link的on click event handler關閉,
甚至在一段時間之後再把它加回來呢?
煩請大家幫忙解答,謝謝。
==
補充一下好了:
像
$("a").on("click", function() {
linkClick(this);
});
function linkClick(link) {
console.log(link);
$(link).off("click");
}
這樣的話每個連結都只會在印出資料之後就關閉onclick事件,
換句話說只允許被點擊一次。
然後這次的問題只是把code改成:
$("#parent").on("click", "a", function() {
linkClick(this);
});
function linkClick(link) {
console.log(link);
$(link).off("click");
}
這樣就關不掉了 ~"~
於是想請問像問題中正確移除event handler的方式
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.27.64
※ 編輯: chrisjohn214 來自: 118.170.27.64 (01/23 17:14)
1F:→ lyforever:不懂你的在加回去是甚麼意思 01/23 17:20
2F:→ lyforever:但是可以用function(e){e.preventDefault()} 01/23 17:20
4F:→ lyforever:不知道是不是你要的 ... 01/23 17:26
5F:→ chrisjohn214:用e.preventDefault()跟關閉handler似乎不太一樣 01/23 17:29
6F:→ chrisjohn214:樓樓上,感謝你回答,不過答案應該不是這個 ~"~ 01/23 17:36
7F:→ lyforever:我改的code不是用e.preventDefault()喔 01/23 17:39
8F:→ chrisjohn214:有,我有copy來試過了,跟我想要得結果不同 01/23 17:46
※ 編輯: chrisjohn214 來自: 118.170.27.64 (01/23 17:56)
10F:→ mrbigmouth:在哪邊開的就在哪邊關啊 01/23 17:47
11F:→ chrisjohn214:樓上這樣會關掉全部的event handler 01/23 17:57
12F:→ chrisjohn214:link2跟link3還沒被點選就也被關閉了 01/23 17:57
14F:→ lyforever:因為你綁在parent上面當然是全觀 01/23 17:58
15F:→ chrisjohn214:綁在子上我知道可以 01/23 17:59
16F:→ chrisjohn214:綁在parent上就沒辦法挑選單一link關閉嗎??? 01/23 17:59
18F:→ lyforever:因為event trigger在parent, child沒有 你要關甚麼... 01/23 18:03
19F:→ lyforever:第二個selector只是filter 不是綁在它上面的意思 01/23 18:11
20F:→ lyforever:A selector string to filter the descendants of the 01/23 18:16
21F:→ lyforever:selected elements that trigger the event 01/23 18:17
23F:→ chrisjohn214:瞭解,這樣看來只能選擇全關或全開了,Thx 01/23 18:27
24F:→ lyforever:或者個別綁event 就可以個別開關 01/23 18:30
25F:→ chrisjohn214:個別綁我是清楚,不過就是想用event delegation 01/23 18:32
27F:→ chrisjohn214:樓上這個寫法挺有意思的,感謝 01/23 19:41
28F:推 nightspirit:寫flag去限制要不要執行click動作比較快阿 01/30 05:55