对所有可能的Urls使用Fancybox

时间:2013-09-08 11:05:00

标签: javascript jquery fancybox fancybox-2

我希望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");
});

问题:

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

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

Demo - 1

Demo - 2

2 个答案:

答案 0 :(得分:0)

...试

$("button").click(function() {
    $("a").gt(0).trigger("click");
});

答案 1 :(得分: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");
});

DEMO