0

テーブルがあり、各行 (trタグ) に 3 つのイベントが設定されてonclickonmouseoutます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>

私の知る限り、 がトリガーされるとすぐに、デフォルトtdonclickイベント チェーンは最初にそれを実行し、次に を実行する必要がありtrますonclick。そして、これは私にとっては問題ありません。ただし、削除の場合 (3 番目のtd) は、イベント チェーンを進めたくないので、 event.stopPropagation();を使用しました。

標準的な動作は非常に正しいのですが、問題が 1 つあります。削除が行われるとすぐに、詳細または編集 tdが機能しなくなります。削除がまだ機能している間、最初のクリック(削除後)は最高の状態で機能しません(何が起こっているのか完全に認識していません)。もう一度クリックすると、td の両方の onclick (詳細と編集) が新しく完全に機能します。

さらにいくつかのこと:

  • 削除前の動作は完全に正しい
  • すべての削除アクションは、trjQueryremoveメソッドを使用して削除します (この命令をコメントしても何も起こりません)
  • この問題が発生すると、列全体 (詳細と編集) で発生します。
  • 削除プロセスを確認しなければ問題は発生しません
  • tronclickは常に完全に機能しています
  • [詳細]または[編集] を (削除後に) 最初にクリックすると、部分的に JavaScript アクションが開始されますが (プリロードが開始されます)、このアクションは完了しません。
  • td アクションが完了しなくても、tr必ずアクションが実行されるので無駄がないstopPropagation()

何か案は?私にはまったくアイデアがありません。

4

1 に答える 1