我有一個表,在每一行(tr
標記)設置三個事件onclick
,onmouseout
和onmouseover
。 對於每一行,前三個td
標籤包含一個onclick
事件。Javascript事件和刪除過程後的奇怪行爲
<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
。這對我來說是好的。但是,如果刪除(第三個td
),我不希望該事件鏈繼續前進,因此我使用event.stopPropagation()
;
標準的行爲是非常正確的,但我有一個單一的問題:一旦發生缺失或者詳細要麼編輯td
停止工作。第一次點擊(在刪除之後)不能在最佳狀態下工作(我不完全知道發生了什麼),而刪除仍然有效。當我再次單擊時,td的onclick(詳細信息&編輯)新完成工作。
一些事情:
- 行爲是刪除
- 之前完全正確的每個刪除操作刪除其
tr
使用jQueryremove
方法(如果我評論該指令沒有任何反應) - 發生此問題發生這種情況發生在整個列(詳細信息和編輯)
- 如果我不確認刪除過程不會發生問題
- 的
tr
的的onclick總是充分的詳細或工作 - 第一次單擊(刪除後)編輯確實部分地啓動JavaScript操作(導致預載啓動),但這個動作沒有完成。
- 即使未完成的TD動作,就總是執行
tr
動作,所以有沒有unusefullstopPropagation()
任何想法?我根本沒有想法。
你確定你沒有爲所有事件設置event.stopPropagation()嗎? – 2013-05-03 08:32:13
我沒有明確地做,我的恐懼是它被別的東西隱式設置。 – 2013-05-03 08:35:22
您的示例適用於我,請參閱[jsFiddle](http://jsfiddle.net/dmalinovsky/H3dP7/)。您必須在其他代碼中執行其他操作。 – 2013-05-03 08:38:25