我的菜單是這樣工作的:每個菜單項(例如,下面的菜單項1)在嵌套在另一個<td>
內的表中的<td>
中。外部<td>
有一些onclick事件處理程序(這裏稱爲「processMenuClick()」)。關於事件冒泡和停止傳播,然後允許冒泡的困惑
<td onClick="processMenuClick(<item-dependent-arguments>);">
<table>
<tr>
<td class="innermenuitem">Menu Item One</td>
</tr>
</table></td>
在某些情況下,我希望防止菜單響應點擊。爲了測試這將如何工作,我做了兩個按鈕。一個適用於event.stopPropagation類<td>
每個「innermenuitem」像這樣:
<button onclick="javascript:stopit()">Test the disable menu functionality</button>
<script type="text/javascript">
function stopit()
{
$("td.innermenuitem").click(function(event)
{
event.stopPropagation();
})
}
</script>
這似乎工作的偉大。當我點擊按鈕時,菜單停止響應點擊。但現在說我想重新啓用菜單。點擊處理程序在外部<td>
中仍未受干擾。所以我想讓我的第二個按鈕禁用我已經應用到內部<td>
的stopPropagation。那有意義嗎?如果是這樣,它是如何完成的?
注意:請注意,以上應允許我禁用菜單,並重新啓用它,而不必重新綁定到其處理程序的外部<td>
。這很重要,因爲傳遞給「processMenuClick()」的參數只在服務器上知道。如果我必須重新處理處理程序,我將不得不找出一種通過某種回發來回顧它們的方法。但我認爲,因爲我所做的一切都是停止從內部<td>
冒出事件,假設有一種方法可以解決UNDO(並允許事件再次冒泡),我應該是金。但是閱讀其他線程看起來像stopPropagation只用於一個事件,而不是像我想的那樣,它基本上就像<td>
上的「狀態」。有人可以讓我直立嗎? (希望能解決我在這裏仔細描述的問題?)謝謝。
Paragram
謝謝謝謝謝謝!有用。我試着去注意這個,但我想我沒有聲望!爲什麼當谷歌關閉stopPropagation時發現這種技術?我見過幾個人問起它,但你是第一個放棄這個祕密的人!我有沒有提到謝謝! – user1693404