父元素事件在点击子元素时触发

时间:2017-11-05 05:05:26

标签: javascript html

我创建了一个复选框并将其置于myElement上。这是我的代码。

var myCheckBox = document.createElement("input");
    myCheckBox.setAttribute("type", "checkbox");
    myCheckBox.innerHTML = "";
    myCheckBox.setAttribute("id", "myID");
    myCheckBox.onchange = CheckBoxChange;
    myCheckBox.setAttribute("value", title);
    myEle.insertBefore(myCheckBox, myEle.firstChild);

除了myEle之外,还有一些事情正在发生。因此,当check / Unckeck复选框时,paraent元素事件也很激烈。如何克服这一点。

我在这里尝试的是

function CheckBoxChange(e){
    e.stopPropagation();
}

但是在CheckBoxChange触发到达之前,myEle的事件变得非常激烈。如何将该事件限制为myEle,而不是checkbox。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

当您点击导致click事件和change事件的复选框时,这两个事件都会冒泡到容器。

在您的代码中,您停止传播change事件,而不是click事件。我猜你的父myEle有一个click处理程序来触发你提到的排序。

如果您更改复选框以使用click处理程序而非change处理程序,其行为应符合您的要求,如下所示:http://jsfiddle.net/wqdcd41p/。 (请注意,即使您通过键盘选中/取消选中复选框,仍会触发click事件。)