javascript - jQuery - 通过输入或 td 选择复选框时停止传播

标签 javascript php jquery checkbox

我想通过单击 td 本身(和/或复选框)来切换 td 内的复选框。

我有以下代码:

$("[id^=musicCheckboxHoldingTD]").on("click", function (e) {
    e.stopPropagation();
    $this = $(this);
    $this.find('.musicSelectionRoundCheckbox:checkbox').click();

});
$(".musicSelectionRoundCheckbox:checkbox").click(function(e) {
     e.stopPropagation();
     $this = $(this);
     musicCheckboxToggled($this); // this function gets called twice 
});

当我仅单击 td 时,效果非常好。

如果我单击 td 中的复选框,则由于 td 的事件和复选框的事件,该函数会被调用两次。

如何防止这种情况发生,只让该函数运行一次?

谢谢:-)

最佳答案

您真的需要两个事件吗?据我所知,仅将事件放在 td 上而不停止传播将允许您为复选框 + td 提供一个处理程序。

$("#musicCheckboxHoldingTD").on("click", function (e) {
    musicCheckboxToggled($(this));
});

如果您的 td 有其他不应触发事件的内容,您可以调整选择器并防止传播。

$("#musicCheckboxHoldingTD, #musicCheckboxHoldingTD > input[type=checkbox]").on("click", function (e) {
    e.stopPropagation();
    musicCheckboxToggled($(this));
});

关于javascript - jQuery - 通过输入或 td 选择复选框时停止传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765652/

相关文章:

javascript - 问题重新计算 parent 高度

php - 主键 + 复合主键导致推进数据库模式出现问题

php - 将 null 转换为字符串

javascript - jQuery scrollTop();有过渡

jquery - 使用 JQuery 编辑 CSS 剪辑,并使用一个设置变量作为值之一

javascript - 下拉子菜单不会保持打开状态

javascript - 使用for循环使用数组中的数据创建多个div

javascript - 是否有最大 javascript 文件大小,浏览器可以处理什么?

java - 如何迭代 Android JavascriptInterface 返回的项目?

php - 需要帮助使用加密将 Encryption Blowfish php 转换为 Nodejs