テーブルがあり、各行 (tr
タグ) に 3 つのイベントが設定されてonclick
いonmouseout
ますonmouseover
。行ごとに、最初の 3 つの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
のonclick
イベント チェーンは最初にそれを実行し、次に を実行する必要がありtr
ますonclick
。そして、これは私にとっては問題ありません。ただし、削除の場合 (3 番目のtd
) は、イベント チェーンを進めたくないので、 event.stopPropagation()
;を使用しました。
標準的な動作は非常に正しいのですが、問題が 1 つあります。削除が行われるとすぐに、詳細または編集 td
が機能しなくなります。削除がまだ機能している間、最初のクリック(削除後)は最高の状態で機能しません(何が起こっているのか完全に認識していません)。もう一度クリックすると、td の両方の onclick (詳細と編集) が新しく完全に機能します。
さらにいくつかのこと:
- 削除前の動作は完全に正しい
- すべての削除アクションは、
tr
jQueryremove
メソッドを使用して削除します (この命令をコメントしても何も起こりません) - この問題が発生すると、列全体 (詳細と編集) で発生します。
- 削除プロセスを確認しなければ問題は発生しません
- の
tr
onclickは常に完全に機能しています - [詳細]または[編集] を (削除後に) 最初にクリックすると、部分的に JavaScript アクションが開始されますが (プリロードが開始されます)、このアクションは完了しません。
- td アクションが完了しなくても、
tr
必ずアクションが実行されるので無駄がないstopPropagation()
何か案は?私にはまったくアイデアがありません。