深入研究这个问题,ShareThis 按钮似乎不适用于返回 HTML 的 Ajax 调用,这意味着 ShareThis 按钮是在同步数据中定义的。因为无论 ShareThis 按钮的 html 是否完美呈现,将内容从<div id="title1">
fancybox中移动/复制title
都不会起作用。
title
解决方法是在打开 fancybox 时动态构建按钮,并提示 ShareThis 脚本使用它们的函数stButtons.locateElements();
read mroe HERE再次放置这些按钮(在 内部) 。当然,我们必须使用fancybox的回调来同步任务。
首先,因为我们要分享的是fancybox中的内容(我假设)而不是整个页面,所以我们需要创建构建ShareThis按钮的函数并传递URL来分享所以
function buildShareThis(url){
var customShareThis = "<div class='share'>"; // class for styling maybe
customShareThis += "<span class='st_facebook_hcount' displayText='Facebook' st_url='"+url+"'></span> ";
customShareThis += "<span class='st_twitter_hcount' displayText='Tweet' st_url='"+url+"'></span>";
customShareThis += "<span class='st_pinterest_hcount' displayText='Pinterest' st_url='"+url+"' st_img='"+url+"' ></span>";
customShareThis += "<span class='st_email_hcount' displayText='Email' st_url='"+url+"'></span>";
customShareThis += "</div>";
return customShareThis;
}
... 上面的函数基本上构建了与您想要在title
. 请注意,我添加了一些 ShareThis 属性(在 pinterest 的情况下为 st_url 和 st_img ...查看有关共享属性和信息的ShareThis 文档)
然后html可以是这样的
<a href="images/01.jpg" class="fancybox" data-fancybox-group="gallery" data-caption="some description 01"><img src="images/01t.jpg" alt="thumb 01" /></a>
<a href="images/07.jpg" class="fancybox" data-fancybox-group="gallery" data-caption="description two" ><img src="images/07t.jpg" alt="thumb 02" /></a>
<a href="images/08.jpg" class="fancybox" data-fancybox-group="gallery" data-caption="third description 03" ><img src="images/08t.jpg" alt="thumb 03" /></a>
注意为每个锚点设置的data-*
属性,以便我们可以将附加信息传递给 fancybox。
然后,fancybox 回调:
1)beforeShow
用于构建title
调用buildShareThis(url)
并从data-caption
属性添加标题(如果有):
beforeShow: function() {
var caption = $(this.element).data("caption") ? $(this.element).data("caption") : "";
this.title = this.title ? this.title + buildShareThis(this.href) + caption : buildShareThis(this.href) + caption;
}
stButtons.locateElements()
2)使用以下方法调用 ShareThis' afterShow
:
afterShow: function(){
stButtons.locateElements();
}
.... 这应该够了吧。
注意:您仍然需要在文档中绑定 ShareThis 脚本,例如
<script type="text/javascript">var switchTo5x=true;</script>
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher: "ur-7957af2-87a7-2408-5269-db75628d3a14"});</script>
(使用您自己的publisher
身份证)
这是使用迄今为止最新的fancybox版本(v2.1.2)进行测试的,请参阅此处的工作演示。随意检查源代码并修改它以满足您的需求。