jquery - 调用基类时更改onclick函数
问题描述
我有 6 个按钮。前3个属于f-click类,所有按钮都属于s-click。首先,我想通过调用 f-click 来运行 functionOne。然后很快应该禁用再次调用 onclick f-click 并希望使用 s-click 类调用 onclick。我的条件如下例如,如果按钮是 1 2 3 4 5 6。
- 我想通过 onclick 1,2 或 3 将消息作为“你的 in..”。
- 4,5,6 不应该被调用,直到消息为“你的..”
- 如果消息“your in..”我想调用按钮值,例如“your clik on”+button_value。(1 到 6)
- 不应该得到“你的..”消息 2 次。
我该怎么做,我的代码如下,
<button type="button" id="b_1" value="0" class="f-click s-click btn" name="button"></button>
<button type="button" id="b_2" value="1" class="f-click s-click btn" name="button"></button>
<button type="button" id="b_3" value="2" class="f-click s-click btn" name="button"></button>
<button type="button" id="b_4" value="3" class="s-click btn" name="button"></button>
<button type="button" id="b_5" value="4" class="s-click btn" name="button"></button>
<button type="button" id="b_6" value="5" class="s-click btn" name="button"></button>
这是我的jQuery代码,
$(".f-click").on('click', function() {
firstFunction()
secondFunction();
});
function firstFunction() {
$(".f-click").prop("disabled", true);
console.log("Your In");
}
function secondFunction() {
$(".s-click").prop("disabled", false);
var selected_button = $(this).val();
$(".s-click").on('click', function() {
console.log("Your click on : "+selected_button);
});
}
但它不起作用,因为第二个功能再次与第一个功能一起使用,我想要做什么。
解决方案
这里有几个问题:
- 在里面
firstFunction()
你在打电话$(".f-click").prop("disabled", true);
,但在你里面又在secondFunction()
打电话$(".s-click").prop("disabled", false);
,因为所有 6 个按钮都有这个类,因此.f-click
按钮永远不会被禁用。 您可以通过不包括禁用
.f-click
按钮来解决此问题,例如:.s-click
$(".s-click:not(.f-click)").prop("disabled", false);
此外,您在内部多次将事件处理程序
secondFunction()
分配给按钮。因此,在第一次单击时,它会显示 1 个控制台日志,然后是 2 个,依此类推。要解决此问题,您应该将按钮的事件处理程序放在外部并触发点击,例如:click
.s-click
click
.s-click
secondFunction()
$(".s-click").click();
$(document).on('click', '.f-click', function() {
firstFunction(this)
});
$(document).on('click', '.s-click:not(.f-click)', function() {
secondFunction();
});
function firstFunction(obj) {
$(obj).removeClass('f-click')
console.log("this is 1st function");
}
function secondFunction() {
console.log("this is 2nd function");
}
.btn { padding: 4px 15px; margin: 4px;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" id="b_1" value="0" class="f-click s-click btn" name="button">1</button>
<button type="button" id="b_2" value="1" class="f-click s-click btn" name="button">2</button>
<button type="button" id="b_3" value="2" class="f-click s-click btn" name="button">3</button>
<button type="button" id="b_4" value="3" class="s-click btn" name="button">4</button>
<button type="button" id="b_5" value="4" class="s-click btn" name="button">5</button>
<button type="button" id="b_6" value="5" class="s-click btn" name="button">6</button>
推荐阅读
- c# - 我想从 ms-access 数据库中检索名为“pid”的列名中的自动编号值,并希望将该自动编号值插入到另一个表中
- firebase - 如何在flutter中删除firestore中的多个文档?
- node.js - 使用 Multer 和 Node js 在 React 上的本地存储中未显示图像
- android - kotlin 中的烧瓶 + 改造无法使用 IP 地址访问 API 端点(无法连接到 /127.0.0.1:5000)
- python - AttributeError:无法获取属性“video_dataset”
- parsing - 使用 >>= 表示基本数字解析器
- python - 如何将 Django 应用模块中的 url 添加到我的主 urls.py 中?
- azure-functions - 未针对 Azure Functions 触发事件网格触发器
- ios - 如何在以编程方式添加的 UIView 内以编程方式创建 UITextView?
- python - 顺序应用数据集中较小批次的代码