【问题标题】:JQuery Accordion Ajax Height issueJQuery Accordion Ajax 高度问题
【发布时间】:2013-07-13 04:52:43
【问题描述】:

我在实现 JQuery Accordion 时遇到问题。

好吧,基本上我需要/正在做的事情如下:

Javascript:

$.ajax(
            {
                url:'MyServlet.jsp',
                type:"GET",
                async:true,
                dataType: "text",
                success:function(data)
                { 
                    $("#leaveRecordsTable").html(data);
                    $( "#leaveRecordsTable" ).accordion({
                          collapsible: true,
                          icons: null,
                          heightStyle: "content"
                        });
                }
            });

html:

<div id="leaveRecordsTable">
</div>

好的,现在发生的事情是它从我的 servlet 正确获取数据,并将其完美添加到 DOM,但由于某种原因,手风琴内每个 div 的高度为 0,这是一个小空间,我不能变大。

我知道这是由 ajax 引起的并动态添加手风琴,因为如果我在“leaveRecordsTable”div 中添加自己的标题和 div,而不执行 ajax 而是执行手风琴方法,它会以正确的方式完美显示高度。

链接到图片看看它的样子(注意:每个div的手风琴里面都有文本字段和数据,所以高度应该大很多):

<a href='http://postimg.org/image/rp6eilhvh/' target='_blank'><img src='http://s22.postimg.org/rp6eilhvh/accordion.jpg' border='0' alt="accordion" /></a>

我从 servlet 发送的数据:

out.println("<h3>" + "Number: " + q + "</h3>");
out.println("<div style='height:0px;'>");
out.println("<table>");
out.println("<tr>");
out.println("<td>From Date</td>");
out.println("<td><input type='text' id='from' name='from' readonly='readonly' style=' width:185px;'/></td>");
out.println("<td style='width:60px;'>To Date</td>");
out.println("<td><input type='text' id='to' name='to' readonly='readonly' style=' width:185px;'/></td>");
out.println("</tr>");
out.println("</table>");
out.println("</div>");

基本上这会被添加到“leaveRecordsTable”(其中一些标题和 div):

<h3>Number: 1</h3>
<div>
<table>
<tr>
<td>From Date</td>
<td><input type='text' id='from' name='from' readonly='readonly' style=' width:185px;'/></td>
<td style='width:60px;'>To Date</td>
<td><input type='text' id='to' name='to' readonly='readonly' style=' width:185px;'/></td>
</tr>
</table>
</div>

【问题讨论】:

  • 能否请您发布您从 ajax 请求中收到的数据。
  • @PranayPrakash 请看我上面的编辑。

标签: jquery ajax height accordion


【解决方案1】:

试试这个

$.ajax(
        {
            url:'MyServlet.jsp',
            type:"GET",
            async:true,
            dataType: "text",
            success:function(data)
            { 
                $("#leaveRecordsTable").html(data);
                $( "#leaveRecordsTable" ).accordion({
                      collapsible: true,
                      icons: null,
                      heightStyle: "content"
                    });
                $("#leaveRecordsTable").accordion("refresh");
            }
        });

【讨论】:

  • 仍然无法正常工作,但仅出于测试目的,我添加了一个带有单击时调用的方法的附加按钮,执行以下操作:$("#leaveRecordsTable").accordion("destroy").accordion( );这可行,但是在设置数据后调用它,仍然无法正常工作?
  • 我注意到一件事,每个 div 都有相同的内容。所以使用css设置div的高度,然后将heightStyle: "content"更改为heightStyle: "fill"并删除刷新行(即$("#leaveRecordsTable").accordion("refresh");)看看会发生什么
  • 仅用于测试目的,这仍然不应该是一个问题。对于生产,每个 div 将具有相同的组件但不同的数据。
  • 哦...等等,我要复制情况并找到解决方案:)
  • 抱歉,刚刚发现另一个问题。此手风琴位于 Jquery 选项卡(第三个选项卡)中。我记得读过一些东西说手风琴高度在不显示时被设置为0?因此,在这种情况下,不显示第三个选项卡,因此将其设置为 0,并且在查看时它不会重新计算,直到我单击按钮销毁并重新创建手风琴。如果我在另一个选项卡上单击按钮,然后返回它会再次中断,即高度设置为 0。我认为这是问题所在。
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 2010-10-20
  • 2016-08-16
  • 2011-11-07
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多