我试图通过纯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>
答案 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>