我的菜单是这样工作的:每个菜单项(例如,下面的菜单项之一)都位于<td>
嵌套在 ANOTHER 中的表中<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>
这似乎工作得很好。当我点击按钮时,菜单停止响应点击。但现在说我想重新启用菜单。click 处理程序在外部仍然不受干扰<td>
。所以我希望我的第二个按钮禁用我已应用于内部的 stopPropagation <td>
。那有意义吗?如果是这样,它是如何完成的?
注意:请注意,上面应该允许我禁用菜单并重新启用它,而无需将外部重新绑定<td>
到其处理程序。这很重要,因为传递给“processMenuClick()”的参数仅在服务器上是已知的。如果我必须重新绑定处理程序,我将不得不想办法通过某种回发来召回它们。但我认为,既然我所做的就是停止从内部冒泡事件<td>
,假设有办法撤消这个(并允许事件再次冒泡)我应该是金子。但是阅读其他线程似乎 stopPropagation 仅用于一个事件,而不是我想的那样,这基本上就像<td>
. 有人可以让我直截了当吗?(希望能解决我的问题
段落