javascript - 如何在 jQuery 中单击四次后禁用按钮?
问题描述
对于带有计数器的个人菜单,我在单击四次后搜索以禁用按钮:
// Add content button
$(document).ready(function () {
var x = 0;
$(".counter").click(function (event) {
$(".count").html(function (i, val) {
return val * 1 + 1
x++;
if (x >= 4) {
$(this).off(event);
}
});
});
});
为了更容易理解,我更喜欢仅在可能的情况下使用 jQuery。
解决方案
如果你想用off()
函数来做,这是一个很好的方法,你必须做一些改变。
this
关键字是指.count
元素。这就是关闭功能不起作用的原因。您可以改用箭头函数来更改它。箭头函数不会改变this
关键字的范围。(另一种方法是使用
event.currentTarget
而不是this
关键字。)我还将 return 语句更改为函数的最后一行。永远不会执行同一函数中 return 语句之后的代码。
var x = 0;
$(".counter").on('click', function(event) {
$(".count").html((i, val) => {
x++;
if (x >= 4) {
$(this).off('click');
}
return val * 1 + 1;
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="counter">click</button>
<div class="count">0</div>
推荐阅读
- javascript - 使用 React 创建了一个测验,尝试创建书签系统,用户可以在其中为测验中的问题添加书签
- google-apps-script - 如何将数据标签添加到由谷歌应用脚本创建的图表
- javascript - 如何将样式 bgcolor 映射为 3 部分颜色到所有部分
- mongodb - 几天后mongodb数据库,突然自动删除了?
- android - 在 Android Studio 中,如何更改 CalendarView 中月份和年份的颜色?
- r - 矩阵for循环上的下标数量不正确
- javascript - 是否可以在 HTML 实体之后编写 XSS 字符串?
- java - Java 无法使用我的正则表达式,在线编辑器可以
- javascript - javascript数组中的深度过滤对象
- javascript - 使用 AJAX 查询。PHP(代码点火器)