Fancybox2加载后更新标题

时间:2016-08-18 00:47:23

标签: javascript jquery fancybox

我自己已经找到了答案,但由于我在发帖,我没有多少运气。 Fancybox位于:http://fancyapps.com/fancybox/

我为自己制作了一个照片库,这非常有效。但是,我想将图像描述放入标题框中。我的图像描述存储在别处。 (我实际上是从Flickr中提取描述,但这在很大程度上是无关紧要的。) 是的,所以每个图像都包含一个名为" id"的html5数据。这与flickr图像ID相关联。 在我打开fancybox之前,我这样做:

&

所有这一切都是将ID传递给我自己的脚本,这个页面只包含一串文本,然后将其放入一个字符串中。

var sDescription;

$(".fancybox").fancybox({
                    beforeLoad: function () {
                        var id = this.element.data('id');
                        var data = {
                            imgID: id
                        };
                        //setupBlocks();
                        loadData(data);
                    }

function loadData(data) {
                    $.ajax({
                        type: "POST",
                        url: "Ajax/getDescription.php"
                        ,
                        data: data
                        , success: function (res) {

                            sDescription = res;
                        }
                    });
                }

现在我只是更新标题以保存标题和描述。当我打开第一张图片时,它会发出ajax请求,在下载文本后,fancybox会打开并显示标题为:Megan 0014" The Wanderer" 当我向左/向右按下时,我可以看到beforeLoad回调正在调用ajax请求,但文本没有更新(仍然在完全不同的模型上说Wanderer - 名称前缀确实已更正),除非我关闭/打开fancybox,然后字符串是正确的。 我尝试过的其他事情:引用"这个"在变量中并将其传递给loadData,并在ajax加载后设置文本,但是一旦fancybox打开,title似乎根本不会更新,这与html中的普通div不同。

作为最后的手段,我可​​能会预先加载每个字符串并将其设置为数组,但我宁愿做的只是在成功时更新字符串。

我尽力保持尽可能通用......但如果有任何问题,请告诉我。

编辑:如果我按两次箭头键(如果我给它加载一秒钟),文本会更新到上一张图片的描述,这只是一个花式框没有刷新的问题字符串。

Edit2:是的,我编辑了很多。我知道。我发现了onUpdate回调,所以在我的ajax成功中我调用$ .fancybox.update();

我的onUpdate看起来像这样:

afterLoad: function () {

                        this.title= this.element.data('title')+sDescription;
                    }

控制台中的标题是CORRECT-页面上的标题不是。这告诉我,不,没有关闭窗口就无法更改标题...

1 个答案:

答案 0 :(得分:0)

哇,我没有想到这一点我感到愚蠢,但我忘记了我可以直接修改div。

$( ".fancybox-title" ).html(this.element.data('title') +" "+ sDescription)