Javascript 如何忽略td中的复选框
我正在使用jQuery的事件委派将单击事件添加到表行中。我在第一行的td中也有一个复选框。当我单击行中的任意位置时,一切都按预期工作。但是,当我单击复选框时,我不希望事件工作。我尝试过使用:not()选择器,但可能我遗漏了一些东西,因为当我单击复选框时仍在触发事件Javascript 如何忽略td中的复选框,javascript,jquery,event-delegation,Javascript,Jquery,Event Delegation,我正在使用jQuery的事件委派将单击事件添加到表行中。我在第一行的td中也有一个复选框。当我单击行中的任意位置时,一切都按预期工作。但是,当我单击复选框时,我不希望事件工作。我尝试过使用:not()选择器,但可能我遗漏了一些东西,因为当我单击复选框时仍在触发事件 HTML <tr> <td> <div class="myCheckbox"><input type="checkbox" name="userName" />
HTML
<tr>
<td>
<div class="myCheckbox"><input type="checkbox" name="userName" /></div>
</td>
<td><a href="/go/to/user/profile"></a></td>
<td>more info</td>
<td>more info</td>
<td>more info</td>
</tr>
请帮我修复我试图做的事情好吗?两个选项(都涉及从现有代码中删除
tr:not
内容,正如您所说,这不起作用-tr
元素不能是复选框,:not
检查元素,而不是其内容):
标签
s
或if ($(event.target).is('input[type=checkbox]')) {
return;
}
例如:
这是通过测试事件的来源来实现的,看看它是否是一个复选框,然后尽早退出标签
激活复选框,则可能需要对标签执行相同的操作
我对#2处理label
s会是什么样子感到好奇,结果证明它足够让代码移动到函数中,但不难&mdash我可能会怎么做:|
两个选项(都涉及从现有代码中删除tr:not
内容,正如您所说,这不起作用-tr
元素不能是复选框,:not
检查元素,而不是其内容):
标签
s
或if ($(event.target).is('input[type=checkbox]')) {
return;
}
例如:
这是通过测试事件的来源来实现的,看看它是否是一个复选框,然后尽早退出标签
激活复选框,则可能需要对标签执行相同的操作
我对#2处理label
s会是什么样子感到好奇,结果证明它足够让代码移动到函数中,但不难&mdash我可能会怎么做:|
尝试使用stopPropagation()防止事件冒泡
$('div.myCheckbox input[type=checkbox]').bind('change', function(e) {
e.stopPropagation();
//do stuff here
});
尝试使用stopPropagation()防止事件冒泡
$('div.myCheckbox input[type=checkbox]').bind('change', function(e) {
e.stopPropagation();
//do stuff here
});
change
事件的可能重复与点击表格单元格无关。change
事件与点击表格单元格无关。这太完美了!!非常感谢。这太完美了!!非常感谢你。
$('div.myCheckbox input[type=checkbox]').bind('change', function(e) {
e.stopPropagation();
//do stuff here
});