【问题标题】:Flexslider loaded via ajaxFlexslider 通过 ajax 加载
【发布时间】:2026-01-13 13:40:01
【问题描述】:

我正在使用 jQuery 插件 easytabs 从另一个页面加载 HTML。 HTML 可能包含一个 jQuery flexslider,但由于 JavaScript 已经运行,滑块在加载后无法工作。这是我的代码:

<ul class="portfolio-thumbnails">
    <li><a href="portfolio.html #item1" data-target="#item1">Load via ajax</a></li>
</ul>

<div class="panel-container">
    <div id="item1" class="portfolio-item"></div> /* The slider loaded from the ajax call will be appended to this div */
</div>

我尝试在单击通过 ajax 加载链接时调用 flexslider,如下所示:

$(".portfolio-thumbnails li a").click(function () { 
    $('.flexslider').flexslider({
        animation: "slide"
    });
});

...但这仅在我第二次单击时才有效。我猜想 flexslider 脚本是在通过 ajax 加载 HTML 之前被调用的。我也尝试过从外部页面(portfolio.html)调用 flexslider 脚本,但这不起作用。

有什么想法吗?

【问题讨论】:

    标签: jquery ajax flexslider


    【解决方案1】:

    你能把它放在你的简单标签 ajax 请求的success 回调中吗? 将以下内容附加到您的 easytab 事件中:

      .bind('easytabs:ajax:complete', function() {
        $('.flexslider').flexslider({
            animation: "slide"
        });
      });
    

    在文档中的event-hooks 下找到:

    点击标签后不加载的响应

    【讨论】:

    • 问题是我没有这样的 ajax 请求。我使用easytabs jQuery插件,它看起来像这样:$('#portfolio-tabs').easytabs({ transitionIn: 'slideDown', transitionOut: 'slideUp', collapsible: true, updateHash: false });所以我没有任何地方可以放置我的成功/完成代码。
    • 我更新了我的答案以适应简单的标签。如果您仍然无法获得它,我们可能需要查看您的 easytab 事件调用。
    • 感谢蒂姆,成功了!这是我的工作代码: $('#portfolio-tabs').easytabs(); $('#portfolio-tabs').bind('easytabs:ajax:complete', function() { $('.flexslider').flexslider({ animation: "slide" }); });
    • 取消将此标记为已接受的答案。这仅在幻灯片是第一个单击的投资组合项目时才有效。见这里:graphic-dev.com/templates/virtual-businesscard/#portfolio 如果你先点击幻灯片,那么它可以工作,但是如果你点击任何其他项目,然后点击幻灯片项目,那么它不会加载图像......
    • 答案没有错,你的js错了。您正在将保存图像的容器的宽度设置为 0px 宽。如果您删除该容器返回的属性,或者如果您单击其中一个滑块处理程序,它会返回。您在某处有一个附加事件,宽度为 0。