【发布时间】:2013-06-15 15:14:19
【问题描述】:
我有一个 div 容器,其中包含 html 复选框及其标签。 使用 jquery 我想在有人单击此容器中的标签时触发单击事件。
当我点击标签时,我看到 jquery 点击事件触发了两次!
出于测试目的,我在复选框而不是标签上触发了点击事件 并且这里的复选框点击事件只触发一次。
这是小提琴。 http://jsfiddle.net/AnNvJ/2/
<tr>
<td>
<div id="test">
<label>
<input type="checkbox" id="1" />demo1</label>
<label>
<input type="checkbox" id="2" />demo2</label>
<label>
<input type="checkbox" id="3" />demo3</label>
</div>
</td>
<td> </td>
<td> </td>
</tr>
JQUERY
$(document).ready(function () {
$('#test label').live('click', function (event) {
alert('clicked');
});
$('#test checkbox').live('click', function (event) {
alert('clicked');
});
});
【问题讨论】:
-
这是因为复选框是附加事件的正确元素,而不是标签,
change事件通常是正确使用的事件,而不是click。 -
因为您的输入复选框在标签内。
-
谢谢大家的回复,我从标签内部删除了输入,它解决了这个问题,但是当我点击标签时它不会切换检查。我发现通过在标签中使用 for 属性可以切换检查,例如