mmenu 菜单系统在 .Net 表单标签中不起作用

Posted

技术标签:

【中文标题】mmenu 菜单系统在 .Net 表单标签中不起作用【英文标题】:mmenu menu system not working within .Net form tag 【发布时间】:2013-10-23 07:52:50 【问题描述】:

我目前正在寻求在我们的 Asp.Net 站点中实施移动菜单系统 mmenu (http://mmenu.frebsite.nl/)。

html 页面和母版页上效果很好,只要它在表单标签之外。当我将它放在表单标签中时,它不再起作用。

这里是菜单的 HTML:

<nav id="menu">
    <ul>
        <li><a href="page.html">The page</a></li>
        <li><a href="mainmenu.html">The mainmenu</a></li>
        <li><a href="submenus.html">Submenus</a></li>
        <li><a href="labels.html">Labels</a></li>
        <li><a href="counters.html">Counters</a></li
        <li><a href="selected.html">Selected item</a></li>
        <li><a href="openmenu.html">Open the menu</a></li>
        <li><a href="closemenu.html">Close the menu</a></li>
    </ul>
</nav>

运行良好:

<script type="text/javascript">
    $(function () 
        $('nav#menu').mmenu(
            zposition: "next",
            position: "top"
        );
    );
</script>

但是,如果我将它放在表单标签中(form id="MainForm" runat="server"),我会收到 jquery 错误。需要在其中,因为某些菜单项将来自数据库。

干杯 西蒙

【问题讨论】:

错误是什么?您是否考虑到 asp.net 更改元素 ids 时标记为 runat="server" 的事实? 【参考方案1】:

Mmenu 在初始化时做了两件事。首先,它用&lt;div class="mmenu-page"&gt; 容器包装&lt;body&gt; 的innerHTML,然后将菜单中的&lt;nav&gt; 剪掉,并将它们在&lt;body&gt; 和DOM 中的新页面容器之间移动。

无论出于何种原因,它都会将 ASP.Net 包装 &lt;form&gt; 标记视为 &lt;body&gt; 标记,但前提是它作为 &lt;body&gt; 的第一个子项出现。在这种情况下,它会在结束 &lt;form&gt; 标记之后立即插入它的包装 &lt;div&gt;

如果你用一个空的&lt;div&gt; 包装你的 ASP.Net &lt;form&gt; 标记,mmenu 将能够正确地定位它的&lt;div class="mmenu-page"&gt; 并且一切都会神奇地工作。

您会希望您的代码 aspx 页面如下所示:

<body>
 <div>
  <form id="form1" runat="server">
   ...
   <nav> ...mobile menu... </nav>
  </form>
 </div>
<body>

【讨论】:

【参考方案2】:

空的 div 包装体对我不起作用。我在 GitHub 上发现了一篇效果很好的帖子:

$('#search-copy').mmenu(
  // options
, 
  // config
  offCanvas: 
      menuWrapperSelector: "#aspnetForm",
      pageNodetype: "form",
      pageSelector: "body > form"
  
);

这是原帖:

https://github.com/FrDH/jQuery.mmenu/issues/426

您可能需要使用您的选择器。我最终使用了 pageSelector 的 ID 和 menuWrapperSelector 的通用选择器。

使用mmenu,我发现有很多隐藏的配置和选项设置。有些在 mmenu 文档中,有些在 OffCanvas 文档中。似乎配置/选项设置几乎可以满足您的任何需求,而无需编写大量自定义 CSS。

【讨论】:

以上是关于mmenu 菜单系统在 .Net 表单标签中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

下拉菜单(选择标签、组合框)在 GeckoView 实现中不起作用

jQuery mmenu 从菜单结构外部打开子菜单

Javascript 验证在 ASP 中不起作用。网

表单权限在具有多个表单的模块中不起作用

OSX 系统菜单栏在 JavaFX 中不起作用

活动菜单类在 wordpress 中不起作用