[问题] 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