【问题标题】:How to get the table cell of a row that was clicked with JQuery如何获取使用JQuery单击的行的表格单元格
【发布时间】:2012-06-25 00:13:43
【问题描述】:

我有一个 HTML 表格,并且我有一个针对其行的 onclick 事件。

我想知道是否有可能找出单击了该行的哪个单元格,而无需为每个单元格设置单独的处理程序?

我有一张桌子:

<tr class="new_row">
   <td class="date">date</td>
   <td class="name">name</td>
   <td class="delete">delete</td>
</tr>

和jquery:

$(".new_row").click(function(){
   if(delete was clicked){
       delete the row
   }
});

这基本上就是我想要做的,检测删除单元格是否被点击。

这可能吗?

【问题讨论】:

  • 假设您将拥有超过 1 行,您将希望使用 class='date' 而不是 ID
  • 哇。你们很好。你们三个都发现我有 id 而不是 class!
  • 在 DOM 启动时是否所有可删除的行都存在,或者您是否在动态添加可能需要删除的行?
  • 好吧,我有点作弊,添加新行后,页面会刷新......

标签: javascript jquery html html-table row


【解决方案1】:

首先你不应该定义多个相同id的元素,这会造成麻烦,你可以将id='delete'替换为class='delete'

// on click td with class delete:
$("td.delete").click(function(){
   //delete was clicked so remove tr
   $(this).parent().remove();
});

【讨论】:

  • errr ya,它们是类,我的错
【解决方案2】:

查看event.target 的ID。如果匹配delete,则可以处理删除。

但是,由于这是在一个表中,我猜你有多个行。如果是这种情况,这是否意味着您有多个具有相同 ID 的单元格?如果是这样,这不是有效的 HTML,当您尝试使用 CSS 选择器时,它可能会导致您的 jQuery 代码出现问题。

【讨论】:

  • 看到td.delete?他想点击它并删除该行。
  • 这正是我想要的。我仍然希望将 onclick 注册到该行,但是我想检查该行的哪个单元格被单击了!谢谢!
【解决方案3】:

你可以这样做

Live Demo

$(".new_row").click(function(event){       
    if($(event.target).text() == 'delete')
    {       
      $(this).remove();      
    }
});

【讨论】:

  • 是的,我就是这样做的! (除非我需要先进行 ajax 调用才能从数据库中删除)
猜你喜欢
  • 2011-08-02
  • 2010-09-27
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多