0

我希望 fanybox 打开页面上所有可能的媒体内容链接。

假设我在页面上有三个锚链接,

html

<a href="https://www.google.com">Google (Just a link to google)</a>
<a href="http://fancyapps.com/fancybox/demo/1_b.jpg">Image 1</a>
<a href="http://fancyapps.com/fancybox/demo/2_b.jpg">Image 2</a>

第一个只是到 google 的链接(不是图片),其他的是图片链接 (jpg),可以是 vimeo、youtube 或任何其他 fancybox 可以显示的内容链接。

Javascript

// Fancybox initializing
$("a")
    .attr('rel', 'gallery')
    .fancybox();

/*
   When I try to trigger first link of gallery, 
   it doesn't open the gallery, because it's not a media content 
   that fancybox can open.
   Demo: http://jsfiddle.net/Py2RA/1599/
*/
$("button").click(function() {
    $("a").eq(0).trigger("click");
});

/*
   But when I trigger second or third one gallery shows up.
   Demo: http://jsfiddle.net/Py2RA/1600/
*/
$("button").click(function() {
    $("a").eq(1).trigger("click");
});

问题:

实际上内容是动态的,假设我在页面上有 50 个链接,但我不知道哪个只是指向另一个页面的链接、youtube 链接、图像链接、vimeo 链接或其他链接。

我只想要fancybox 带有可能的开放画廊,或者让我知道它可以显示哪个链接。

演示 - 1

演示 - 2

4

2 回答 2

0

这就是我解决问题的方法,

//this part of code check if the link can be shown in fancybox and set fancybox-group data attribute.
$("a").each(function() {
    var url   = this.href || '',
        mediaDefaults = $.fancybox.helpers.media.defaults,
        type  = false,
        what,
        item,
        rez,
        params;
    if ($.fancybox.isImage(url) || $.fancybox.isSWF(url)) {
        $(this).attr("data-fancybox-group", "fancyboxlinks");
    } else {
        for (what in mediaDefaults) {
            if (mediaDefaults.hasOwnProperty(what)) {
                item = mediaDefaults[what];
                rez  = url.match(item.matcher);

                if (rez) {
                    $(this).attr("data-fancybox-group", "fancyboxlinks");
                }
            }
        }
    }
});

// Now here you can initialize fancybox here
// Selector just select the link that can be used for fancybox.
$("a[data-fancybox-group]").fancybox();

$("button").click(function() {
    $("a[data-fancybox-group]").eq(0).trigger("click");
});

演示

于 2013-09-09T19:27:38.203 回答
0

尝试...

$("button").click(function() {
    $("a").gt(0).trigger("click");
});
于 2013-09-08T11:11:23.823 回答