javascript - event.stopPropagation() 未结束 Javascript 中的冒泡

标签 javascript jquery

我开始学习这种冒泡在 Javascript 中是如何工作的。现在我的问题是,我想我不完全理解它!我正在 HTML 中运行 onclick (如下所示:

onclick="checkboxhit(<?php echo $allmail[$key]["mailid"]; ?>)"

),并且它正在运行 If 和 Else 语句。基本上我只是想检查何时何时不复选框被单击。这是我正在使用的 JavaScript:

listofmailids = [];
function checkboxhit(mailid) {
    if (listofmailids.indexOf(mailid) == -1) {
        listofmailids.push(mailid);
        $("#deletemail").css("color", "#474747");
        event.stopPropagation()
    }
    else {
        listofmailids.splice(listofmailids.indexOf(mailid), 1);
        if (listofmailids.length == -1) {
            $("#deletemail").css("color", "#A3A3A3");
        }
        event.stopPropagation()
    }
}

然而,event.stopPropagation() 并没有停止 If 和 Else 语句的执行。我该如何解决这个问题?谢谢!

最佳答案

使用onclick时,如果想要event对象,需要显式传递

onclick="checkboxhit(<?= json_encode($allmail[$key]['mailid']) ?>, event)"

在你的函数中

function checkboxhit(mailid, e) {
    e.stopPropagation();
    // etc

json_encode() 将确保 $allmail[$key]['mailid'] 值可以安全地用作 JavaScript 文本。

<小时/>

如果您想停止传播阻止默认操作,您可以使用falsy返回值,如下所示

onclick="return checkboxhit(...)"

在你的函数中

return false;

关于javascript - event.stopPropagation() 未结束 Javascript 中的冒泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31395589/

相关文章:

javascript - 间接使用时 Function.prototype 定义中的 'return this' 有什么用处?

javascript - 如何从 json 输入中删除空值

javascript - 序列化 JSON 数组并将其解析为数组

javascript - 选择中的每个项目的 jQuery 调用函数

javascript - 在 javaScript 动态添加一些标签到我的 HTML 之后我的设计改变了,我该如何解决这个问题

javascript - 如何将值从数据库传递到单选按钮组?

javascript - 通过 jQuery 验证日期字符串格式的最佳方法

javascript - 使用 innerhtml 显示下拉列表文本而不是值

javascript - 从具有相同类别的所有链接获取文本

php - 如果加载时间超过 10 秒,如何刷新页面?