jQuery:除了单击某些子元素外,整个表行突出显示

时间:2015-07-13 02:02:36

标签: javascript jquery

我的问题是如何使用jQuery创建父点击,但是不要点击某些子元素(例如:复选框或超链接)?同时,我想允许自己点击子元素(例如:超链接需要工作吗?

详细说明,当单击表格中的一行时,我希望它将一个选中的类添加到该行以突出显示它。

我在每行中都有一个复选框,用于切换已检查的类。因此,我计划在单击行时使用trigger()单击此复选框。您将在我的JSFiddle example中看到。

我遇到的问题是,如果他们单击复选框本身或行中的超链接,我不希望它触发点击。

我希望使用$('td :not(a,input)')之类的选择器可以正常工作,但显然我不理解正确点击子元素,因为这不起作用。

如果您点击复选框

,则在默认示例中我会注意到JSFiddle example

我一直在浏览网页寻找答案,但似乎没有人正在做我想要实现的目标。

1 个答案:

答案 0 :(得分:1)

您可以替换它:

$('td :not(a,button,.custom-checkbox)').on('click', function() {
    $(this).closest('tr').find('input').trigger('click');
});

对于此

$('td').on('click', function(e) {
  var $target = $(e.target); //This will get the element that is actually being clicked      
  if (!$target.is("a,button,.custom-checkbox, [type=checkbox]")) {
    //If the element being clicked doesn't belong to the group of the "unclickable" elements
    //I also added checkboxes to the "unclickable" elements
    $(this).closest('tr').find('input').trigger('click');
  }
});