【问题标题】:Accordion adjusting height of the panels in jquery 1.10.4手风琴调整jquery 1.10.4中面板的高度
【发布时间】:2014-02-20 14:33:23
【问题描述】:

我知道这是一个有据可查的问题,但是 - 我被困住了。

我正在使用最新的 jQuery (1.10.4) 并运行手风琴。面板区域的高度现在看起来设置为“自动”,因为它采用最大的内容并将其应用于其余面板。根据 API 文档,我更改了以下 JS 行(heightStyle 从“auto”到“content”):

$.widget( "ui.accordion", {version: "1.10.4", options: {
    active: 0,
    animate: {},
    collapsible: true,
    event: "click",
    header: "> li > :first-child,> :not(li):even",
    heightStyle: "content",                         <!-- This line is changed -->
    icons: {activeHeader: "ui-icon-triangle-1-s",
        header: "ui-icon-triangle-1-e"},

这没有帮助。 我也试过这个(也失败了):

var heightStyle = $( ".questions" ).accordion("heightStyle");
$( ".questions" ).accordion("heightStyle");

最后我尝试了这个,令人惊讶的是,它也没有用:

$( "#fullpageaccordion .questions" ).accordion({heightStyle: "content"});

(.questions) - 是手风琴元素的名称。

有什么想法吗?谢谢!

更新 2 - html 代码的相关部分(选项卡中的手风琴):

<div class="questions">
<div id="Q401">
<table id="QTable">
<tr>
  <td><div id="QNumber">4.1</div></td>
  <td><div id="QText">Is the vessel provided with adequate operator’s navigation instructions and procedures?</div>
</td>
</tr>
</table>
</div>
<div>
<table id="RTable">
<tr>
<td>
<div id="Guidance">
  <p>content</p>
<ul>
      <li></li>
      <li></li>
    </ul>   
<p></p>
 </div>
 </td>

<td>
<div id="Response" class="Response">
  <label><input type="radio" name="Radio401" value="Y" id="Radio_401Y" onchange='radioChange(this, "401")'>Yes</label>
            <label><input type="radio" name="Radio401" value="N" id="Radio_401N" onChange='radioChange(this, "401")'>No</label>
 </div>
 <div id="responseDetails">
    <div id="Observation">
     <label for="observation">Observation:</label>
        <textarea name="observation" id="Obs401" rows="6" disabled style="width: 530px;" placeholder="Enter text of observation here ..."></textarea>
    </div>
    <div id="DueDate">
       <label for="DueDate">Due date:<br></label>
       <input name="DueDate" class="DueDate" type="date" id="DueDate401"/>
    </div>
    <div id="actions">
       <label for="actions">Actions required to correct and/or prevent this observation:</label>
       <textarea name="actions" id="pa401" rows="6" style="width: 530px;"></textarea>
     </div>
  </div>
 </td>
</tr>
</table>
</div>
</div> //closing class

其他题同结构

【问题讨论】:

  • 你能提供一些HTML代码吗?
  • 太棒了。您能否再澄清一下,哪些行为不像您所期望的那样?我在 JSFiddle 中乱搞,我看到你的手风琴面板从 4.1 of question 开始,一直持续到 Content 单选按钮之后。你希望它在哪里结束?
  • 是的,好吧,我只提出了一个问题,而且面板肯定会调整到它的大小。假设您有另一个问题,长度是原来的两倍,那么第一个面板将被拉伸以容纳更长的内容。
  • 所以我希望它在每个面板的 END OF CONTENT 结束。
  • JSFiddle 运气好吗?

标签: javascript jquery accordion


【解决方案1】:

好的,我已经搞砸了,这里是Fiddle Demo

我把你的代码弄乱了一点,希望你不要介意:)

基本上我删除了表格等,因此它更适合手风琴的结构。 基本上你需要的是问题块。每个块有 2 个子元素,一个 h3 元素(如果您愿意,可以是另一个)和一个 div 元素。

我给这些块一个类,并这样初始化它们:

$( ".questionBlock" ).accordion({collapsible: true, active: false });

这样他们就开始崩溃了。展开每个,您可以看到它们根据各自的内容都有自己的高度。

如果还不清楚,请告诉我。

编辑:好的,我已经调整得更好了。这是初始化:

$( "#questions" ).accordion({collapsible: true, active: false, autoHeight: false});

此外,不再需要代码块questionBlock。您只需要 questions 作为 id,然后使用 &lt;h3&gt;div 组合。我更新了提琴手演示。

更新:heightStyle: "content" 添加到您的初始化中,这样您将拥有:

$( ".questions").accordion({collapsible: true, active: false, autoHeight: false, heightStyle: "content"});

你的小提琴很好用。

【讨论】:

  • 在我的例子中 - QBlock 实际上是 questionBlock,“Q”代表问题)))))
  • @Alexander 是的,但你的结构不适合我。它需要是一个包含标题和正文的 div 块。您将它们分成不同的 div 并将它们包装在表格中。
  • 你不会相信,但我原来的结构与你的相似,但手风琴不起作用,所以我不得不改变它))))
  • 好的,尺寸效果很好 - 谢谢。但是,当您打开另一个问题时,您打开的面板不会折叠。最初,只有一个面板会保持打开状态。还有一件事 - 为什么你只为问题 2 而不是为问题 1 分配了 bigHeight?
  • @Alexander 嗯,这很奇怪,我无法重现您所说的内容。我可以独立展开/折叠每个问题。 bigHeight 仅在 Question 2 上存在,以证明即使 Question 2 更大(100px 高度),Question 1 的大小仍然较小,仅取决于其内容。
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多