jq 如何点击table的一行任意地方后,选中checkbox

阿狸Ahri 阿狸Ahri 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如图


我本来的写法是这样的

$("#tdClassInfo").on("click", "tr", function () {
var input = $(this).find("input");
if ($(input).attr("checked")) {
$(input).removeAttr("checked");
}
else
{
$("#tdClassInfo tr").find("input").each(function () {
$(this).removeAttr("checked");
});
$(input).attr("checked", true);
}
});

用了好久相安无事。昨晚我发现一个问题, 就是 如果用户点击的时候,点击的恰好是checkbox的时候,那么执行顺序是
checkbox打钩或者去掉勾 -----执行checkbox click事件 ----执行tr点击事件。

这样问题就来了,如果我点击chexkbox,那他先把勾选上了,那么此时的checked ==true,一会执行上面的代码的时候,
直接跳到true的 if语句里面了, 这个语句直接又把checked状态去了。这样就相当于没点。

现在我愁死了,都不知道怎么弄,
我刚才想用点击tr的时候,主动调用checkbox的点击事件,结果执行了一下发现是个死循环,一直都在alert,我都不知道怎么回事。

$("#tdClassInfo").on("click", "tr", function () {
var input = $(this).find("input");
$(input).click();
});
$("#tdClassInfo").on("click", "tr input", function () {
alert(2222) //这个alert一直在弹出来,死循环的
});


我现在都不知道怎么搞,难道要tr判断一次,checkbox又判断一次?中间定义一个全局的bool变量,然后checkbox点击了,tr就不执行了?
这好像搞得我好麻烦的样子
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
阿狸Ahri
JavaScript 87,983 成员 224,681 内容