前端问题,HTML 页面中的 table.tr 使用 onclick 后点击 tr 中的 a.href 会弹出两个页面的问题

2014-03-30 12:28:02 +08:00
 andybest
例子:
<table>
 <tr onclick="location.href='/test';">
  <td>a</td>
  <td><a href="/test">test</a></td>
  <td>b</td>
 </tr>
</table>

本来没有 onclick="location.href='/test';" 但我想实现点击该 tr 的任何位置都会进入 /test 所以增加了 tr.onclick
现在的问题是,在手机浏览器中点击文本链接:
<a href="/test">test</a>
会一次弹出两个窗口(因为一个激发了文本链接 a.href ,一个激发了 tr.onclick)

虽然 PC 浏览器没有这个问题,但这种实现方法仍然感觉不合理
怎么解决这个问题比较合适?
8774 次点击
所在节点    问与答
8 条回复
zorceta
2014-03-30 12:33:25 +08:00
event.target
见MDN
ETiV
2014-03-30 12:47:02 +08:00
禁用 tr 下 a 标签的 onclick 事件冒泡
andybest
2014-03-30 12:58:41 +08:00
@zorceta 谢谢,但 IE 下没有 event.target,我用 event.srcElement 是一样事吧

@ETiV 似乎是先触发 onclick 后触发 a.href 的吧?
zorceta
2014-03-30 13:05:48 +08:00
@andybest IE用什么不知道,反正大概思路就是拿到事件的处罚者,如果是a就preventDefault()
ETiV
2014-03-30 13:06:19 +08:00
onclick 别 return false
zorceta
2014-03-30 13:09:39 +08:00
@zorceta 触发-_-#
@ETiV 在tr的onclick里return true?
ETiV
2014-03-30 13:13:22 +08:00
@zorceta a 别return false,就能打开a的href。
a里面取消事件冒泡,tr 就收不到onclick了。

tr 随意
mikuazusa
2014-03-30 13:15:35 +08:00
<a onclick="return false;" href="/test">test</a></td>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/106496

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX