无法使用纯JavaScript

时间:2015-05-21 12:47:40

标签: javascript jquery checkbox

我试图通过纯JavaScript从几个click元素中分离p个事件。我可以访问这些p元素,但出于某种原因,我无法删除click个侦听器。它适用于jQuery,但不适用于纯JS。页面加载时会调用getP_element函数。 这是我的代码:

function getP_element(){
    console.log("page loaded");
    var p_array = document.getElementById("checkboxesContainer").getElementsByTagName("p");
                for(var i=0;i<p_array.length;i++){
                    p_array[i].onmousedown = new function(){
                        return false; //this doesnt work
                    }
                }
    $("#checkboxesContainer p").click(false); //this works
}

编辑: 更多关于此处发生的事情的信息。我创建了几个自定义样式的自定义checkboxes。出于某种原因,即使用户点击p标签,也会选中复选框,因此我认为我需要分离click个事件。这就是我在HTML中定义它们的方式:

<div id="checkBoxDiv2" class="checkBoxDiv">
                <input type='checkbox' value='someValue' id="checkBox2"/>
                <label for="checkBox2"><p class="checkBoxText">some text goes here</p>
                    <span></span>
                </label>
            </div>

2 个答案:

答案 0 :(得分:1)

您无需禁用点击事件。

当您点击p时,复选框已被选中,因为p内有label标记for="checkBox2"

这就是它的意图。

删除for,它会阻止点击标签以激活相应的input元素

答案 1 :(得分:0)

尝试

p_array[i].onmousedown = null;

请参阅How to Clear/Remove JavaScript Event Handler?

修改

单击p标签时选中复选框的原因与点击处理程序无关。

相反,原因是父label标记中的for属性。这将检查标签上发生单击时的复选框。

将您的HTML更改为

<label><p class="checkBoxText">some text goes here</p>
                    <span></span>
                </label>