简体   繁体   English

内容加载后如何调整jQuery手风琴的大小?

[英]How to resize jQuery accordion once content is loaded?

I've got a jQuery UI accordion which will eventually contain several forms. 我有一个jQuery UI手风琴,它将最终包含几种形式。 To keep my HTML file from becoming insanely unreadable, I want to toss each form into a separate file and load them. 为了防止我的HTML文件疯狂地变得不可读,我想将每种形式扔到一个单独的文件中并加载它们。 From another Stack Overflow question/answer I got this, which works well: 从另一个堆栈溢出问题/答案中,我得到了很好的解决方案:

...
<head>
  ...
  <script>
    $(function(){
      $("#form1").load("form1.html");
      $("#form2").load("form2.html");
      $("#form3").load("form3.html");
    });
  </script>
  ...
</head>

<body>
...
<div id="accordion">
  <h3>Form 1</h3><div id="form1"></div>
  <h3>Form 2</h3><div id="form2"></div>
  <h3>Form 3</h3><div id="form3"></div>
</div>
...
</body>

Unfortunately, the accordion's size appears to be computed before the various formN.html files are loaded. 不幸的是,手风琴的大小似乎是在加载各种formN.html文件之前计算出来的。 How do I force it to recompute the accordion's size after those files have been loaded? 加载这些文件后,如何强制它重新计算手风琴的大小?

You can use refresh method. 您可以使用refresh方法。 Since you have 3 separate ajax requests I would do something like: 由于您有3个独立的Ajax请求,因此我将执行以下操作:

var f1=$("#form1").load("form1.html");
var f2=$("#form2").load("form2.html");
var f3=$("#form3").load("form3.html");

$.when(f1,f2,f3).then(function(){
   /* all forms loaded now we can refresh accordion */
   $('#accordion').accordion('refresh');
});

accordion refresh() docs 手风琴refresh()docs

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM