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

看板Ajax作者 (咪咪獎)時間11年前 (2014/01/23 17:10), 編輯推噓3(3025)
留言28則, 4人參與, 最新討論串1/1
請問一下,像下面這段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)

01/23 17:20, , 1F
不懂你的在加回去是甚麼意思
01/23 17:20, 1F

01/23 17:20, , 2F
但是可以用function(e){e.preventDefault()}
01/23 17:20, 2F

01/23 17:26, , 3F
http://jsfiddle.net/82F6P/ 改了一下你的code
01/23 17:26, 3F

01/23 17:26, , 4F
不知道是不是你要的 ...
01/23 17:26, 4F

01/23 17:29, , 5F
用e.preventDefault()跟關閉handler似乎不太一樣
01/23 17:29, 5F

01/23 17:36, , 6F
樓樓上,感謝你回答,不過答案應該不是這個 ~"~
01/23 17:36, 6F

01/23 17:39, , 7F
我改的code不是用e.preventDefault()喔
01/23 17:39, 7F

01/23 17:46, , 8F
有,我有copy來試過了,跟我想要得結果不同
01/23 17:46, 8F
※ 編輯: chrisjohn214 來自: 118.170.27.64 (01/23 17:56)

01/23 17:47, , 9F
01/23 17:47, 9F

01/23 17:47, , 10F
在哪邊開的就在哪邊關啊
01/23 17:47, 10F

01/23 17:57, , 11F
樓上這樣會關掉全部的event handler
01/23 17:57, 11F

01/23 17:57, , 12F
link2跟link3還沒被點選就也被關閉了
01/23 17:57, 12F

01/23 17:58, , 13F
01/23 17:58, 13F

01/23 17:58, , 14F
因為你綁在parent上面當然是全觀
01/23 17:58, 14F

01/23 17:59, , 15F
綁在子上我知道可以
01/23 17:59, 15F

01/23 17:59, , 16F
綁在parent上就沒辦法挑選單一link關閉嗎???
01/23 17:59, 16F

01/23 17:59, , 17F

01/23 18:03, , 18F
因為event trigger在parent, child沒有 你要關甚麼...
01/23 18:03, 18F

01/23 18:11, , 19F
第二個selector只是filter 不是綁在它上面的意思
01/23 18:11, 19F

01/23 18:16, , 20F
A selector string to filter the descendants of the
01/23 18:16, 20F

01/23 18:17, , 21F
selected elements that trigger the event
01/23 18:17, 21F

01/23 18:17, , 22F

01/23 18:27, , 23F
瞭解,這樣看來只能選擇全關或全開了,Thx
01/23 18:27, 23F

01/23 18:30, , 24F
或者個別綁event 就可以個別開關
01/23 18:30, 24F

01/23 18:32, , 25F
個別綁我是清楚,不過就是想用event delegation
01/23 18:32, 25F

01/23 19:31, , 26F
01/23 19:31, 26F

01/23 19:41, , 27F
樓上這個寫法挺有意思的,感謝
01/23 19:41, 27F

01/30 05:55, , 28F
寫flag去限制要不要執行click動作比較快阿
01/30 05:55, 28F
文章代碼(AID): #1IuDo3Vg (Ajax)
文章代碼(AID): #1IuDo3Vg (Ajax)