执行Ajax。只获得一次手风琴扩展

时间:2013-07-23 14:23:11

标签: jquery ajax jquery-ui get accordion

我有以下代码来执行Ajax .get,然后将数据插入手风琴的一个部分。但有几个问题:

1)每次单击要扩展的节标题时,它都会执行.get操作。我怎么才能让它只发生一次?我尝试了一个名为loaded的布尔变量,但这打破了整个事情。有没有办法在扩展相关的手风琴部分时执行.get?

$(document).ready(function(){
$('#studentQualsH3').click(function(){
    $.get('/srl/quals_ajax.html' , function(data){
        var dataArray = data.split('<!--AJAX DATA -->');
        $('#QualsCheckbox').before(dataArray[1]);
        $('.unitButton').button();
        $('#MainApp').accordion({heightStyle: "content"});
        });
    });
});

2)如何返回手风琴状态以自动适应返回的内容?第$('#MainApp').accordion({heightStyle: "content"});行没有这样做。

提前感谢您的帮助!

安迪

编辑: jQuery函数应该插入数据的HTML如下:

  <div id="MainApp">
  <h3 ID="studentQualsH3"><i class="icon-caret-right"></i>Qualifications</h3>
  <div id="StudentQuals">
    <table id="QualsCheckbox">
    <tr><td>Qualifications meet required standard</td><td>
  </div> <!-- End of StudentQuals Div -->
<h3 ID="pStatH3"><i class="icon-caret-right"></i>Personal Statement</h3>
<div id="PersonalStatment">
</div> <!-- End of PersonalStatement Div -->
 <h3 id="refH3"><i class="icon-caret-right"></i>References for Applicant</h3>
 <div id="AppRefs">
  </div> <!-- End of AppRefs Div -->
  </div> <!-- End of MainApp Div -->

1 个答案:

答案 0 :(得分:0)

要在选择特定的手风琴部分时执行AJAX例程,您需要使用activate event。但是,更好的解决方案可能是仅执行一次.get()并将响应存储在全局变量中:

$(document).ready(function(){
    var qualsData;
    $.get('/srl/quals_ajax.html' , function(qualsData){});
    $('#studentQualsH3').accordion({
        activate: function( event, ui ) {
            var dataArray = data.split('qualsData');
            $('#QualsCheckbox').before(dataArray[1]);
            $('.unitButton').button();
        },
        heightStyle: 'content'
    });
});