检测点击的元素

Nic*_*ico 3 html jquery

我有一张桌子tr,你可以点击它.这些tr可以包含a.

  <tr id="12" href="/guestbook/edit?id=12">
    <td class="main">
       <strong>Remi</strong>
       <a href="mailto:xxx@xxx">xxx@xxx</a>
    </td>
    <td class="date">05-11-2010 11:34</td>
    <td class="number">ip</td>
  </tr>
Run Code Online (Sandbox Code Playgroud)

这是检测tr上的点击的jquery代码

$('table tr[href]').click(function(e){
   document.location.href = $(this).attr('href');
});
Run Code Online (Sandbox Code Playgroud)

例如,当我单击电子邮件地址时,首先打开我的电子邮件客户端(这很好),然后加载页面编辑(这很糟糕).是否有可能检测到我点击过的元素?如果它是A或TR?

Nic*_*ver 10

您可以检查.target事件并查看它.nodeName是什么,如下所示:

$('table tr[href]').click(function(e){
   if(e.target.nodeName == 'A') return;
   document.location.href = $(this).attr('href');
});
Run Code Online (Sandbox Code Playgroud)

正如@ Hannes在评论中所说,最好至少使用一个数据属性,如下所示:

<tr id="12" data-href="/guestbook/edit?id=12">
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中:

$(this).attr('data-href');
Run Code Online (Sandbox Code Playgroud)

或者,在jQuery 1.4.3+中:

$(this).data('href');
Run Code Online (Sandbox Code Playgroud)