举个粟子: html 的一个 button,如何在点击 10 下后不响应 click 事件?

2014-11-02 08:48:33 +08:00
 MntCw
我是这么做的,在document里定义一个i
$("#btn").click(function(){
if( i != 10){
//do something
}

});

但我觉得应该有更好的方式来实现,不知道大家有没有什么建议?
3336 次点击
所在节点    问与答
12 条回复
loading
2014-11-02 08:57:54 +08:00
提醒一下:如果和服务器有交互,记得服务器也限制。
sanddudu
2014-11-02 09:01:09 +08:00
removeListener 不行吗
kran
2014-11-02 09:04:07 +08:00
$.data()
或者返回闭包
MntCw
2014-11-02 09:25:57 +08:00
@sanddudu 在哪个时候remove 是在else里面吗?
MntCw
2014-11-02 09:33:00 +08:00
@kran 请教一下
MntCw
2014-11-02 09:33:16 +08:00
@loading OK 了解,谢啦!!
sanddudu
2014-11-02 09:40:37 +08:00
@MntCw 是的
如果到 10 次,就移除这个监听器
kran
2014-11-02 09:41:51 +08:00
$('#btn').click((function(times){
return function(){
//代码
}
})(10));
这样应该可以的.我不做前端,你式一下
MntCw
2014-11-02 09:51:39 +08:00
@sanddudu OK 了解了,但是可以试试@kran的做法
MntCw
2014-11-02 09:53:18 +08:00
@kran OK 我试一下,看来我对闭包的理解还不够
littlepanzh
2014-11-02 11:07:37 +08:00
var fn = function (event) {
var $target = $(event.currentTarget);
var i = $target.data('i') || 0;
i = ~~i + 1;
$target.data('i', i);
// do something;
if (i > 9) {
$target.off('click', fn);
}
};
$('#btn').click(fn);
MntCw
2014-11-02 21:21:07 +08:00
@littlepanzh 看明白了,感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/143307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX