如何在ajax调用完成后进行手风琴显示

时间:2016-01-28 13:15:15

标签: jquery

点击Accordian我正在进行ajax调用并将数据附加到手风琴内容

如果没有ajax调用,accoridian工作正常,请在这里查看jsfiddle(withOut ajax call)

http://jsfiddle.net/CzE3q/1145/

但是当我将ajax与手风琴融为一体时,手风琴就没有打开

http://jsfiddle.net/CzE3q/1144/

这是我的代码

$(function() {
  $('#accordion .content').hide();
  $('#accordion h2').click(function() {
    var clcikedid = $(this).attr('id');
    var ajaxcall = $.ajax({
      url: 'test',
      success: function(data) {
        alert('ajx call completed');
      }
    });
    ajaxcall.done(function() {
      if ($(this).next().is(':hidden')) {
        $('#accordion h2').removeClass('active').next().slideUp('slow');
        $(this).toggleClass('active').next().slideDown('slow');
      }
    });
  });
});

你能告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您不必在完成功能中使用this

if ($('#' + clcikedid).next().is(':hidden')) {
    $('#accordion h2').removeClass('active').next().slideUp('slow');
    $('#' + clcikedid).toggleClass('active').next().slideDown('slow');
}

您已在clcikedid中保存了ID。我用它来解决问题。 this的价值不是你的方面。它是ajax调用对象。