[問題] JQuery eventHander移不掉(已解決)

作者: chrisjohn214 (咪咪獎)   2014-01-23 17:10:25
請問一下,像下面這段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的方式
作者: lyforever (LY)   2014-01-23 17:20:00
不懂你的在加回去是甚麼意思但是可以用function(e){e.preventDefault()}http://jsfiddle.net/82F6P/ 改了一下你的code不知道是不是你要的 ...
作者: chrisjohn214 (咪咪獎)   2014-01-23 17:29:00
用e.preventDefault()跟關閉handler似乎不太一樣樓樓上,感謝你回答,不過答案應該不是這個 ~"~
作者: lyforever (LY)   2014-01-23 17:39:00
我改的code不是用e.preventDefault()喔
作者: chrisjohn214 (咪咪獎)   2014-01-23 17:46:00
有,我有copy來試過了,跟我想要得結果不同
作者: mrbigmouth (大嘴先生)   2014-01-23 17:47:00
http://jsfiddle.net/82F6P/1/ 完在哪邊開的就在哪邊關啊
作者: chrisjohn214 (咪咪獎)   2014-01-23 17:57:00
樓上這樣會關掉全部的event handlerlink2跟link3還沒被點選就也被關閉了
作者: lyforever (LY)   2014-01-23 17:58:00
http://jsfiddle.net/82F6P/2/ 綁在子上面因為你綁在parent上面當然是全觀
作者: chrisjohn214 (咪咪獎)   2014-01-23 17:59:00
綁在子上我知道可以綁在parent上就沒辦法挑選單一link關閉嗎???
作者: lyforever (LY)   2014-01-23 17:59:00
http://jsfiddle.net/82F6P/3/因為event trigger在parent, child沒有 你要關甚麼...第二個selector只是filter 不是綁在它上面的意思A selector string to filter the descendants of theselected elements that trigger the eventhttp://api.jquery.com/on/
作者: chrisjohn214 (咪咪獎)   2014-01-23 18:27:00
瞭解,這樣看來只能選擇全關或全開了,Thx
作者: lyforever (LY)   2014-01-23 18:30:00
或者個別綁event 就可以個別開關
作者: chrisjohn214 (咪咪獎)   2014-01-23 18:32:00
個別綁我是清楚,不過就是想用event delegation
作者: mrbigmouth (大嘴先生)   2014-01-23 19:31:00
作者: chrisjohn214 (咪咪獎)   2014-01-23 19:41:00
樓上這個寫法挺有意思的,感謝
作者: nightspirit (鞭策自己社清流夜靈)   2014-01-30 05:55:00
寫flag去限制要不要執行click動作比較快阿

Links booklink

Contact Us: admin [ a t ] ucptt.com