我有一个表,在每一行(tr
标签)上设置了三个事件onclick
,onmouseout
并且onmouseover
. 对于每一行,前三个td
标签包含一个onclick
事件。
<tr onclick="javascript:getWSData(...)" onmouseout="this.className=clTwo" onmouseover="this.className=clThree">
<td onclick="popDivInfo(false, verRicDivCreaInfo('details'))">
Details
</td>
<td onclick="popDivInfo(false, verRicDivCreaInfo('edit'))">
Edit
</td>
<td onclick="if(confirm('Are you sure?')) {getWSData('delete');event.stopPropagation(); } else {alert('Cancelled!')}">
Delete
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
据我所知:一旦触发td
's onclick
,默认事件链应该首先执行它,然后应该执行tr
's onclick
。这对我来说没问题。但是,在删除(第三个td
)的情况下,我不希望事件链继续前进,所以我使用了 event.stopPropagation()
;
标准行为是完全正确的,但我遇到了一个问题:一旦删除发生,要么详细信息要么编辑 td
停止工作。第一次点击(删除后)不能发挥最佳效果(我不完全知道发生了什么),而删除仍然有效。当我第二次单击时,两个 td 的 onclick(详细信息和编辑)都刚刚完全正常工作。
还有几件事:
- 删除前的行为是完全正确的
- 每个删除操作都
tr
使用 jQueryremove
方法删除它(如果我评论这条指令,什么都不会发生) - 发生此问题时,会在整个列(详细信息和编辑)上发生
- 如果我不确认删除过程,问题就不会发生
- 的
tr
onclick 始终可以正常工作 - 第一次单击(删除后)详细信息或编辑确实部分启动了 javascript 操作(导致启动了预加载),但此操作未完成。
- 即使 td 动作没有完成,
tr
动作也会一直执行,所以没有 unusefullstopPropagation()
有任何想法吗?我完全没有想法。