动态添加的内容不再打开手风琴

时间:2017-11-30 08:08:54

标签: jquery ajax

我有一个在模态窗口内打开的手风琴。手风琴不再有效,因为我现在动态地为模态创建内容,之前,数据在我的HTML中进行了硬编码,所以一切都按预期运行。

这就是我现在用于AJAX调用的内容:

      ...
      success : function(data)
      {
        $('<div/>', {
          id:'modal'
        }).html(data).appendTo('body');

        $('#modal').popup({
          autoopen  : true,
        });
      },

这是对手风琴的呼唤:

$('.accordion').accordion({
    collapsible: true
});

模态窗口打开没问题,但手风琴不会折叠或打开。我还可以看到没有与手风琴有关的事件,在变化之前,还有。

因为我的模态的内容现在是动态创建的,有没有办法让手风琴再次运作?

2 个答案:

答案 0 :(得分:1)

每次进行编辑时都必须刷​​新手风琴。

$('.accordion').accordion("refresh");

答案 1 :(得分:0)

这可能是因为当你做$('。accordion')。accordion({...,你没有“.accordion”类,因为AJAX还没有完成,你在非non上设置了accordion现有的类。它与jquery中的click事件类似。快速的解决方法是在AJAX的“成功”功能中设置你的手风琴。喜欢这个:

success : function(data)
  {
    $('<div/>', {
      id:'modal'
    }).html(data).appendTo('body');

    $('.accordion').accordion({
        collapsible: true
    });

    $('#modal').popup({
      autoopen  : true,
    });
  },

或者像Eddie说的,你可以使用$('。accordion')。accordion(“refresh”);,喜欢这个:

success : function(data)
    {
        $('<div/>', {
            id:'modal'
        }).html(data).appendTo('body');

        $('.accordion').accordion("refresh");
        $('#modal').popup({
            autoopen  : true,
        });
    },

将它放在html(数据)之后是非常重要的.appendTo('body');.我希望我能帮助理解这个问题。