在JQuery中触发单击事件
示例jquery代码有什么问题?我试图在单击表行或复选框时选择表行和复选框。我的理解是,事件在DOM树上冒泡,因此使用e.stopPropagation;在每个复选框中,处理程序都将防止再次触发行单击事件。单击某行时可以看到错误,由于某种原因,复选框再次被取消选中 谢谢。。正如评论所说,你可以做得比现在简单得多。我的方式只是其中之一。代码应该是相当自解释的 HTML 只是因为在JQuery中触发单击事件,jquery,Jquery,示例jquery代码有什么问题?我试图在单击表行或复选框时选择表行和复选框。我的理解是,事件在DOM树上冒泡,因此使用e.stopPropagation;在每个复选框中,处理程序都将防止再次触发行单击事件。单击某行时可以看到错误,由于某种原因,复选框再次被取消选中 谢谢。。正如评论所说,你可以做得比现在简单得多。我的方式只是其中之一。代码应该是相当自解释的 HTML 只是因为 是否一次只选择一行?一次只选中一个复选框,单击后,再也不允许选择该行?@JamWaffles-在本例中,是一次只选择一行
是否一次只选择一行?一次只选中一个复选框,单击后,再也不允许选择该行?@JamWaffles-在本例中,是一次只选择一行,但否,不允许再次选择该行。简单地使用tr单击来选择..id模式匹配是一种严重的jQuery反模式。每次我看到这些,我就知道它们是龙。当您想将功能组分配给多个元素时,请使用类或数据-*。@mu太短了-这是我试图在我的应用程序中实现的简化版本。正如您所看到的,一些ID有一个类型,因此这些常见类型将被全局和单独选择。@Steffan Kendall-真的吗?我认为选择器的通配符功能是jquery的优势之一?好吧,看到您的解决方案非常有趣,但您已经更改了许多要求。正如我所说,必须使用复选框,因为在更复杂的现实世界示例中,我正在全局选择id中具有公共类型的行集。现在只能单击td而不能单击该行,尽管我接受将label类分配给所有tds。@JEZ这是一个最小的实现。您应该能够使代码适应您的需要。您需要为这两个选项都添加一些复选框处理代码。单击函数并稍微更改选择器和类。
<table>
<tr>
<td><input type="radio"name="radio"></td>
<td class="label">Row 1</td>
</tr>
<tr>
<td><input type="radio" name="radio"></td>
<td class="label">Row 2</td>
</tr>
<tr>
<td><input type="radio"name="radio"></td>
<td class="label">Row 3</td>
</tr>
</table>
$(document).ready(function() {
$("td.label").click(function() {
$(this).parents("tr").addClass("selected").siblings().removeClass("selected");
$(this).parents("tr").find("input").click();
});
$("td > input").click(function() {
$(this).parents("tr").addClass("selected").siblings().removeClass("selected");
});
});
.selected td
{
background-color: #e1e1e1;
}