【发布时间】:2011-10-03 07:25:40
【问题描述】:
需要单击表格中的一行,其中每个第一个单元格都包含一个链接并打开一个 url。
<table>
<tr>
<td><a class="fancybox" href="detail.aspx?CID=67525">LT5C260A436C41</a></td>
<td>more data</td>
</tr>
<tr>
<td><a class="fancybox" href="detail.aspx?CID=17522">LA5C260D436C41</a></td>
<td>more data</td>
</tr>
...
</table>
完整的行应该是可点击的,而不是只有链接顶部在fancybox 中打开详细信息页面,即在页面本身中。
所以我尝试做这样的事情:
$("table tr").bind('click',function(e) {
e.stopPropagation();
$(this).find("a").trigger('click');
});
但似乎该事件递归地冒泡导致:
未捕获的 RangeError:超出最大调用堆栈大小
如何以正确的方式触发对整行的点击,而不是仅触发链接,从而避免stackoverflow?
更新:我非常感谢下面的答案,但我的问题是关于触发事件,而不是执行该事件中的行为。解决方法可能很好,但在这种情况下不是。
【问题讨论】:
-
把它放在一个 jsfiddle 中,这样我们可以更恰当地帮助你
-
我做了这个:jsfiddle.net/MarkKramer/F5aMb 我添加了 onclick 以查看它是否在模拟点击,它正在向
a注册点击,但它没有跟随链接。 -
我修好了。在下面检查我的答案。
-
@Caspar Kleijne:查看我的更新。
-
@Caspar Kleijne,我解释了递归和一个微小的可重用解决方法。
标签: javascript jquery event-handling