0

我正在使用fancybox 2。我已经设法通过AJAX 在fancybox 中加载内容。但它会加载整个页面,我只对特定的 div 感兴趣。在 fancybox 1 中,我们可以通过在 ajax 中添加过滤器来做到这一点。但我不确定如何在fancybox 2 中过滤。

如何从fancybox 2中的AJAX加载页面中过滤特定的div?

    $(".fancybox").fancybox({
        maxWidth    : 800,
        maxHeight   : 600,
        fitToView   : false,
        width       : '70%',
        height      : '70%',
        autoSize    : false,
        closeClick  : false,
        openEffect  : 'none',
        closeEffect : 'none',
        type        : 'ajax',
        'ajax'      : {
            dataFilter: function(data) {
            return $(data).find('#modalArticleContainer')[0];
        }
    });

直到 ajax 它可以工作但会加载整个页面,当我添加过滤器时它会停止工作。这就是我之前在 fancybox 1 中所做的。

4

3 回答 3

2

如果您使用的是最新的(https://github.com/fancyapps/fancyBox/zipball/master),那么有一个技巧可以从 ajax 响应中加载特定元素 -

<a href="mypage.html #my_id" class="fancybox fancybox.ajax">Load ajax</a>

$(".fancybox").fancybox();
于 2012-05-11T06:45:17.383 回答
2

我已经使用afterLoad回调来更新内容以找到您的特定元素来实现这一点。

$('.fancybox').fancybox({
 afterLoad   : function() {
  this.content = $("<div>").html(this.content).find("#main-content").html();
 }
});

所以在这个例子中,只会#main-content加载元素中的内容。

这使我们可以只在移动设备上点击链接,但在桌面上加载fancybox内的页面,而不需要页眉和页脚等。

于 2015-10-02T10:57:00.737 回答
0

有了fancybox 3,它就更简单了:

<a data-fancybox data-type="ajax" data-src="my_page.com/path/to/ajax/" data-filter="#yourDivId" href="javascript:;">AJAX Content</a>

演示

于 2017-09-02T10:09:23.987 回答