0

我的应用程序有一个垂直菜单。每个菜单都是一个链接按钮。这些链接按钮放置在一个 html表格单元格中 <td>,我创建它们并将它们放置在后面的 ASP.NET 代码中。

为了创建一个菜单,menuCell.Controls.Add(newMenu); 当我单击具有 sumenus 的链接时,这显示在主链接按钮下方:

在此处输入图像描述

当我再次单击它时,子菜单必须隐藏,但它们所占据的位置一直留在那里。我用 jquery 来做:

function toggleSubMenu(smenu) {
        $('.'+smenu').toggle();
    }

看一下 Menu2 和 Menu 3 之间的空白区域。

在此处输入图像描述

所以主要目标是删除这个空间。是否有任何自动生成的 Asp.NET 占位符或容器?或者我是否必须使用 jQuery 手动上去 Menu3 和它下面的所有内容?

完整的 html 代码:MenuCell保留菜单。同样,每个菜单都是在 ASP.NET 代码后面创建和放置的。

<body MS_POSITIONING="Gridlayout">
    <!-- Logo -->
    <form id="Menu" method="post" runat="server">
        <table id="mainTable" style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 0px" tabIndex="-1" height="800" cellSpacing="0" cellPadding="0" border="0" runat="server" width="125px">
            <tr align="left">
                <td style="WIDTH: 125px" tabIndex="-1" vAlign="bottom" align="middle" colSpan="2" height="55"><IMG id="imgLogo" tabIndex="-1" height="50" width="50" align="middle" border="0" runat="server">&nbsp;
                </td>
            </tr>
            <TR>
                <TD style="WIDTH: 125px" vAlign="top" align="middle"></TD>
                <TD vAlign="top" align="left" colSpan="1" rowSpan="2"><IMG id="imgLine" style="WIDTH: 1px" height="720" hspace="0" width="1" vspace="0" border="0" runat="server"></TD>
            </TR>
            <tr align="left">
                <td id="menuCell" style="WIDTH: 125px" tabIndex="-1" vAlign="top" align="left" height="740" runat="server"></td>
            </tr>
        </table>
    </form>
</body>

由于隐私政策,我无法放置整个呈现的代码,但每个菜单和子菜单链接都呈现<a><td>命名menuCell

渲染的代码是:

  <td id="menuCell" style="WIDTH: 125px" tabIndex="-1" valign="top" align="left" height="740">
    <a id="Menu1" style="width:124px;LEFT:1px;TOP:8px;POSITION:relative;">Menu1</a>
   <br />
   <a id="Menu6" style="width:124px;LEFT:1px;TOP:11px;POSITION:relative;">Menu6</a>
   <br />
4

2 回答 2

0

ASP.NET 将在服务器端处理代码。页面加载后,DOM 只能使用 Javascript 或 jQuery 等 Javascript 库进行操作。

于 2012-12-21T14:16:58.660 回答
0

我将每个子菜单放在一个 Asp.net 面板中:

Panel psubmenu = new Panel();
HyperLink hylSMenu = new HyperLink();
psubmenu.Controls.Add(hylSMenu);

然后将面板放入整个容器中:

menuCell.Controls.Add(psubmenu);

像这样我切换panel而不是每个子菜单。

于 2012-12-21T22:12:54.473 回答