使用JSON的Colorbox库

时间:2012-05-25 02:15:36

标签: jquery json colorbox

玩得很开心

尝试使用Colorbox加载图片库,其中URL通过JSON调用加载,而不在主页上显示图像

抓住了flickr的示例 http://www.jacklmoore.com/demo/flickr.html

尝试了一些路由,我已经将代码半工作了

var links = $()
    ,link
    ,img
;

$.getJSON('http://URL/json.json', function(data) {

    $.each(data, function(index, photo) {
        link = $('<a/>', {
            href: photo.url
            ,title: photo.name
        });

        img = $('<img/>').attr({
            src: photo.url
            ,alt: photo.name
        }).appendTo(link);

        links = links.add(link);
    });

    $('#gallery-holder').html(links);
});

$.colorbox({
    rel: 'gallery'
    ,inline: true
    ,href: '#gallery-holder'
});

/*
$.colorbox({
    html:links
    ,rel: 'gallery'
    ,inline: true
});
*/

JSON看起来像

[
   {
      "url":"http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-1_large.jpg",
      "name":"1420 Magnolia (1)"
   },
   {
      "url":"http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-10_large.jpg",
      "name":"1420 Magnolia (10)"
   },
   {
      "url":"http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-11_large.jpg",
      "name":"1420 Magnolia (11)"
   }
]

构建隐藏的div

<div style="display: none;" id="gallery-holder">
    <a href="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-1_large.jpg" title="1420 Magnolia (1)">
        <img src="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-1_large.jpg" alt="1420 Magnolia (1)">
    </a>
    <a href="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-10_large.jpg" title="1420 Magnolia (10)">
        <img src="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-10_large.jpg" alt="1420 Magnolia (10)">
    </a>
    <a href="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-11_large.jpg" title="1420 Magnolia (11)">
        <img src="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-11_large.jpg" alt="1420 Magnolia (11)">
    </a>
</div>

然而,当我在控制台中运行代码时,它会显示一个颜色框,它将容器div作为隐藏元素 当我尝试将对象作为内联HTML传递时,它不显示任何内容

如果有人知道如何将隐藏div的内部HTML传递给colorbox以便解析成一个库,那就好奇了吗?

1 个答案:

答案 0 :(得分:1)

您不希望隐藏div中的链接。您希望显示的链接然后颜色框将显示href值(图像)。

如果你仔细观察这个例子,你会发现正在发生的事情是链接上添加了一个缩略图,然后这些链接被添加到数组中。然后该阵列被彩色框。 Colorbox拦截链接点击,而不是加载图像(在href中),图像显示在颜色框中。

有几种方法可以解决这个问题,但最简单的方法是链接到图像。要实现您的目标,代码应如下所示:

var links = $(), link;

$.getJSON('http://URL/json.json', function(data) {

    $.each(data, function(index, photo) {
        link = $('<a/>', {
            href: photo.url,
            title: photo.name,
            text: photo.name
        });

        links = links.add(link);
    });
});

links.colorbox({rel:'gallery', speed:0});

$('#gallery-holder a').append(links);

HTML应如下所示:

​<div id="gallery-holder"></div>​​​​​​​​​​​​​​​​​​​​​​​​​​​

应该是这样的:

<div id="gallery-holder">
    <a href="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-1_large.jpg" title="1420 Magnolia (1)" class="cboxElement">1420 Magnolia (1)</a>
    <a href="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-10_large.jpg" title="1420 Magnolia (10)" class="cboxElement">1420 Magnolia (10)</a>
    <a href="http://s3.amazonaws.com/ACCOUNT/media/photos/1420-magnolia-11_large.jpg" title="1420 Magnolia (11)" class="cboxElement">1420 Magnolia (11)</a>
</div>

如果您有缩略图,则可以使用缩略图而不是文字。

为了告诉你它是如何工作的,我创建了一个jsfiddle。你包含的图像路径是假的(我相信你知道)所以我只使用了随机图像,但是如果用实际图像路径替换小提琴,你可以看到它的实际效果。