gpt4 book ai didi

jquery - 如何在嵌套的 ajax asp.net 选项卡中设置子选项卡高度?

转载 作者:技术小花猫 更新时间:2023-10-29 11:11:36 26 4
gpt4 key购买 nike

我有 2 个嵌套的 ajax asp.net 选项卡。如果我将父选项卡 (TabContainerMain) 的初始高度设置为 300,如何在 css 或 jquery 中设置子选项卡 (SubTabContainerUg) 的高度?标记如下所示:

<!DOCTYPE html>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<html lang="en">
<head runat="server">
<title></title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<script src="../js/jquery-1.6.2.js" type="text/javascript"></script>
<script src="../js/modernizr-latest.js" type="text/javascript"></script>
<script src="../js/admin.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</cc1:ToolkitScriptManager>
<section>
<cc1:TabContainer ID="TabContainerMain" runat="server" Height="300px">
<cc1:TabPanel ID="tp2" runat="server" HeaderText="test 2">
<ContentTemplate>
<section>
<div style="height: 100%; width: 30%; float: left;">
<div>
<asp:Label ID="Label5" runat="server" Text="Search:"></asp:Label>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<input id="Button1" type="button" value="Search" onclick="SearchClick(this)" />
</div>
</div>
<div style="width: 70%; float: left;">
<cc1:TabContainer ID="SubTabContainerUg" runat="server" ActiveTabIndex="0">
<cc1:TabPanel ID="subTab1" runat="server" HeaderText="Cubes">
<ContentTemplate>
<div style="height: 100%;">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</ContentTemplate>
</cc1:TabPanel>
<cc1:TabPanel ID="subTab2" runat="server" HeaderText="Reports">
<ContentTemplate>
<div>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</div>
</ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>
</div>
</section>
</ContentTemplate>
</cc1:TabPanel>
<cc1:TabPanel ID="tp3" runat="server" HeaderText="test 3">
<ContentTemplate>
</ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>
</section>
<footer> This is footer. </footer>
</form>
</body>
</html>

注意:1)我最初的不可维护的解决方案是在服务器后面的代码中设置这个高度,如下所示:

SubTabContainerUg.Height = new Unit(TabContainerMain.Height.Value - 43);

请注意,此代码适用于 IE7/8/9,即调整子选项卡的大小并将容器保持在相同的高度(= 300 像素),但上面的代码并不好,因为如果我更改样式(边距/borders) 然后上面的代码(准确地说是硬编码常量)也必须改变。

2) 为了简洁起见,我简化了标记。主选项卡和子选项卡都将包含文本框和列表框等控件。

3) 该页面作为对话框使用,在FF和IE7/8/9中运行。

最佳答案

回答

使用 jQuery 可以相对简单地解决您的问题。对于每个要调整到其父级大小的 TabContainer,您必须:

// SubTabContainerUg is the TagContainer's ID property.
var myheader = $('#<%= SubTabContainerUg.ClientID %> > .ajax__tab_header');
var mybody = $('#<%= SubTabContainerUg.ClientID %> > .ajax__tab_body');
var myparentbody = $('#<%= TabContainerMain.ClientID %> > .ajax__tab_body');
mybody.height(myparentbody.height() - myheader.outerHeight(true) - myheader.position().top);

详情

  1. 找到子选项卡控件的 header 元素(包含选项卡按钮);

    var myheader = $('#<%= SubTabContainerUg.ClientID %> > .ajax__tab_header');
  2. 找到子选项卡控件的主体元素(所选选项卡的主体);

    var mybody = $('#<%= SubTabContainerUg.ClientID %> > .ajax__tab_body');
  3. 找到父选项卡控件的正文元素(子选项卡控件所在的位置);

    var myparentbody = $('#<%= TabContainerMain.ClientID %> > .ajax__tab_body');
  4. 子选项卡控件的主体高度设置为父选项卡控件' s 主体高度(减去子选项卡 的标题高度和顶部位置 - 顶部位置包括任何父填充和任何元素边距)。

    mybody.height(myparentbody.height() - myheader.outerHeight(true) - myheader.position().top);

此解决方案适用于:


编辑:将 offset() 更改为 position()。根据 position()文档:

When positioning a new element near another one and within the same containing DOM element, .position() is the more useful.


编辑 2:这是一个 Gist of your markup , here's my markup and code , 这是一个 revision showing the differences .

  1. 我引用了 http://code.jquery.com/jquery-1.6.2.min.js - 希望您在代码中引用了它的原始且未修改的副本。

  2. cc1:TabPanel ID="tp2" 中的第一个 div 中删除了 height: 100%;

  3. 将第二个 div 从 float: left; 更改为 float: right;(此 div 包含 cc1:TabContainer ID="SubTabContainerUg").

  4. cc1:TabPanel ID="subTab1" 中的 div 中删除了 style="height: 100%;"

关于jquery - 如何在嵌套的 ajax asp.net 选项卡中设置子选项卡高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15756122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com