- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对所有 JavaScript 都比较陌生,所以请耐心等待 :) 我正在尝试将 ShareThis 插件添加到 FancyBox 的标题中,以便用户可以共享某张图片。它显示得很好,但是当我单击“共享”按钮时没有任何反应。相同的插件在常规页面上工作得很好,所以我猜它是冲突的脚本(FancyBox 脚本中的插件脚本)。不幸的是,我不太了解 JavaScript,无法自己解决它,但我确实需要它来工作...
如果有人知道如何解决它,我将不胜感激!这是我到目前为止在代码方面的内容:
FancyBox 的脚本(包括 showing elements in Fancybox title ):
$(document).ready(function() {
$(".wrap").fancybox({
closeClick : false,
nextEffect: 'fade',
prevEffect: 'fade',
beforeLoad: function() {
var el, id = $(this.element).data('title-id');
if (id) {
el = $('#' + id);
if (el.length) {
this.title = el.html();
}
}
},
helpers : {
title: {
type: 'inside'
}}
});
});
这是我需要在标题中显示的内容:
<div id="title1" class="hidden">
<div class='share'>
<span class='st_facebook_hcount' displayText='Facebook'></span>
<span class='st_twitter_hcount' displayText='Tweet'></span>
<span class='st_pinterest_hcount' displayText='Pinterest'></span>
<span class='st_email_hcount' displayText='Email'></span>
</div>
<p>Some description</p>
</div>
我包括了 ShareThis script也来自他们的网站。
有什么建议吗?
最佳答案
深入研究这个问题,似乎 ShareThis 按钮在返回 HTML 的 Ajax 调用上并不真正起作用,这意味着 ShareThis 按钮是在同步数据中定义的。因为从 <div id="title1">
移动/复制内容进入 fancybox 的 title
无论 ShareThis 按钮的 html 是否完美呈现,都不会起作用。
解决方法是在打开 fancybox 时动态构建按钮,并提示 ShareThis 脚本使用它们的函数 title
再次放置这些按钮(在 stButtons.locateElements();
内)。阅读 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
中显示的代码相同的 html 结构。 . 注意我添加了一些 ShareThis 属性(st_url 和 st_img in the case of pinterest ... 检查 ShareThis documentation 关于共享属性和信息)
然后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-*
为每个 anchor 设置属性,以便我们可以将附加信息传递给 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;
}
2) 调用 ShareThis' stButtons.locateElements()
使用 afterShow
:
afterShow: function(){
stButtons.locateElements();
}
....应该可以解决问题。
注意:您仍然需要在文档中绑定(bind) 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
ID)
这是使用迄今为止最新的 fancybox 版本 (v2.1.2) 进行测试的,请参阅 WORKING DEMO HERE .请随时检查源代码并根据您的需要进行修改。
关于javascript - ShareThis 插件在 FancyBox 标题中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923229/
我有三个 html 页面,index.html、first.html 和 second.html。在索引页中,我有一个按钮 B1。当我单击该按钮时,会打开一个精美的框,其中包含 first.html
在我的网站上,我有一个 fancybox,其中包含隐藏的 的内容。在页面上。这个隐藏包含指向外部站点的链接。 是否可以在已经打开的 fancybox 中打开此链接? 我目前的代码如下: $("#li
Here我的链接是花哨的盒子,在笔记本电脑和台式机的所有浏览器中都可以正常工作,但是当您在移动设备(尤其是 I-PAD 这样的移动设备)中打开它时,叠加层会隐藏整个内部 html 内容。非常感谢您的回
我正在使用带有自定义模板的 fancybox-3 插件: $().fancybox({ selector : '[data-fancybox="images"]', animati
我正在尝试通过 Fancybox 内容中的链接关闭 Fancybox 实例。我正在按照 this question 中的建议使用 parent.jQuery.fancybox.close(); .它第
我使用 fancybox 作为联系表单。并在页面加载时打开。所以我使用了以下代码。 jQuery.fancybox.open('#fancy'); 我已经尝试过这个,但 fancybox 在加载时无法
如果脚本仅在 Fancybox 打开的页面上加载,CKEditor + Fancybox 似乎可以工作。然而,如果父页面已经初始化了 CKEditor,那么任何 Fancybox 打开的带有 CKEd
我有关于 Fancybox 3 的问题。我的网页有很多(10-15)个图片库,每个图片库大约有 50 张图片。每个画廊在主页上都有一个图片链接。 什么fancybox使用更好/更有效?: 不带缩略图使
从 2.x 升级到 3.0 后,我的应用程序崩溃了。新版本有没有类似的功能 $.fancybox.showLoading(); $.fancybox.helpers.overlay.open(); 最
转到:http://fancybox.net/打开任何示例(在底部页面) 当鼠标悬停在 fancybox 内的内容上时,浏览器主窗口无法滚动。当鼠标在其他地方时它就可以工作。我不想要这种行为。你会如何
How do I open fancybox via manual call for a gallery in the html not via the jquery options? 这回答了手动打
当用户关闭 Fancybox 对话框时如何重新加载当前页面? 最佳答案 使用 fancybox onClosed 处理程序; $('#some_element').fancybox({ onClo
我想要一个按钮来打开带有特定图片的 fancybox rel-group。我不太确定这是否有效,但我会试一试。我的问题是,如果用户单击链接,我想执行 jQuery。这是我的代码 var js = "j
我遇到了 fancybox 加载缓存图像的问题。我想确保图像在出现在页面上之前不被缓存,但是我试图通过它的各种回调(beforeShow、afterShow、afterLoad、beforeLoad)
我正在尝试编写一段代码,在用户单击 fancybox 中的其中一个选项后(选择一个选项后 fancybox 将关闭) 这是我的代码 索引.php Field: 选择字段.php
我坚持为我的照片设置 Fancybox 窗口,我是这样做的: $(document).ready(function() { $('.fancybox').fancybox(); }); 这是Fa
我想打开一个花哨的盒子,但是它给出了一个类型错误,你能帮我解决这个问题吗 查看页面包含以下代码 $(document).ready(function() { $('.fancybox').fancy
我有 2 个 fancyboxes,我试图从第一个打开第二个(通过按钮或关闭第一个).. I'm the first Fancybox! Close first Fancybox
嗨,我正在尝试将变量从子 iframe fancybox 发送到父级。但我似乎无法掌握如何做到这一点。有没有人有想法。我已经尝试过用js了。有 friend 建议用php来做,但还没有找到解决方案。我
我想知道一种加载我的 fancybox 并将 fancybox 附加到此 fancybox 中的链接之一的方法。我从今天开始使用最新版本的 fancybox (2.0.1)。 这是我尝试过但没有成功的
我是一名优秀的程序员,十分优秀!