Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 动态添加的内容不再打开accordion_Jquery_Ajax - Fatal编程技术网

Jquery 动态添加的内容不再打开accordion

Jquery 动态添加的内容不再打开accordion,jquery,ajax,Jquery,Ajax,我有一个手风琴,可以在模态窗口中打开。手风琴不再工作了,因为我现在正在动态地为模态创建内容,以前,数据是用HTML硬编码的,所以一切都按预期运行 这就是我现在的AJAX调用: ... success : function(data) { $('<div/>', { id:'modal' }).html(data).appendTo('body'); $('#modal').pop

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

这就是我现在的AJAX调用:

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

        $('#modal').popup({
          autoopen  : true,
        });
      },
模态窗口打开没有问题,但手风琴不再折叠或打开。我还可以看到,手风琴没有任何活动,在改变之前,有


因为现在正在动态创建my modal的内容,有没有办法让手风琴重新运行?

这可能是因为当您使用$('.accordion').accordion({…,您没有“.accordion”类,因为AJAX尚未完成,您可以在不存在的类上设置accordion。这与jquery中的单击事件类似。快速解决方法是在AJAX的“成功”函数中设置accordion。如下所示:

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

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

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

        $('.accordion').accordion("refresh");
        $('#modal').popup({
            autoopen  : true,
        });
    },
成功:函数(数据)
{
$('', {
id:‘模态’
}).html(数据).appendTo('body');
$('手风琴').手风琴({
可折叠:正确
});
$(“#模态”)。弹出窗口({
自动打开:对,
});
},
或者像Eddie说的,您可以使用$('.accordion').accordion(“刷新”);如下所示:

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

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

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

        $('.accordion').accordion("refresh");
        $('#modal').popup({
            autoopen  : true,
        });
    },
成功:函数(数据)
{
$('', {
id:‘模态’
}).html(数据).appendTo('body');
$('.accordion')。accordion(“刷新”);
$(“#模态”)。弹出窗口({
自动打开:对,
});
},

把它放在html(数据)后面很重要。appendTo('body');。我希望我能帮助理解这个问题。

每次编辑时都必须刷新手风琴

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

$(“.accordion”).accordion(“刷新”);
我认为这会解决问题,因为手风琴是动态创建的,所以您需要使用事件委派。我认为bootstrap在文档中可能有与此相关的内容。让我检查一下。谢谢Eddie。我在原始调用下面添加了该代码。对吗?是的,两个元素以及内容都是动态创建的现在。Eddie的评论似乎已经解决了这个问题。如果你想发布你的答案,Eddie,我很高兴为你的答案而感谢你。谢谢你。谢谢Eddie。我现在有另一个问题。现在手风琴又开始工作了,动态添加的内容显示了所有元素的相同数据,这是不对的。看起来数据是错误的ng缓存,但我在AJAX调用中添加了
cache:false
,它仍然显示相同的数据集。如果我发布一个新的答案,你能看一下吗?是的,我可以检查一下。谢谢你,Eddie。我现在发布它。谢谢你,Ivan的详细解释。这确实很有帮助。我完全按照你发布的内容做了,在我看到Eddie建议的刷新之后凯德。我现在有一个不同的问题,所以我要发布一个新问题。希望你能看一下。