如何在使用FancyBox 2.0时隐藏标题标签hover的工具提示?
我正在使用FancyBox 2.0的新版本。 以下是开发站点的演示: http : //ab.basikgroup.com/exhibition_works/61
在那个文档之后,我通过链接标记中的Title属性传递了我的lightbox的标题信息。 我的标题信息很长,里面有一些HTML。 所以我想隐藏默认的工具提示,当用户滚动图片时显示它。
我发现了一些很好的例子来说明如何做到这一点。 例如: 删除标题标签工具提示
我的问题是,当我使用这种方法(这是删除hover的标题属性,然后replace它,当你没有hover在链接上),但如果你真的点击图片加载灯箱,标题不进入FancyBox。 我试着编写一个testinghover和点击的JQuery函数,但无法使其工作。
任何意见或帮助将不胜感激。
更新[2016年3月4日]
这是一个旧的post,被接受的答案是当时版本的有效。 使用当前版本(v2.1.5)一个更干净的解决scheme,不需要任何额外的HTML容器,使用callback将不会使用特殊的data-fancybox-title
在你的锚点,如:
<a data-fancybox-title="This title doesn't show on hover" class="fancybox" href="path/img01.jpg">open image in fancybox</a>
然后使用简单的fancybox初始化,不需要这种效果所需的callback,如:
$(".fancybox").fancybox();
请参阅JSFIDDLE
你甚至可以在属性里面使用HTML标签:
<a rel="gallery" data-fancybox-title="This is <span style='color:#ff0000'>title</span> No. 1" class="fancybox" href="path/img01.jpg">open image</a>
查看更新的JSFIDDLE
原始答案:
一个优雅的方法是将fancybox使用的title
存储在其他地方,而不是title
属性…在一个隐藏的div
,例如紧跟在锚之后:
<a class="fancybox" href="images/01.jpg" title="only show this on hover"><img src="images/01t.jpg" /></a> <div class="newTitle" style="display: none;"><p>hello, visite my site <a href="http://fancyapps.com/fancybox/">http://fancyapps.com/fancybox/</a></p></div>
通过这种方式,您可能(或根本不)提供与fancybox title
不同的tooltip
。 你也忘了添加或删除title
属性的值的额外的JavaScript(你只会增加CPU负载)。
如上例所示,这对包含链接的长或复杂的标题也很有用。
那么你的fancybox脚本应该是这样的:
$(document).ready(function() { $(".fancybox").fancybox({ afterLoad: function(){ this.title = $(this.element).next('.newTitle').html(); }, helpers: { title : { type : 'inside' } } }); // fancybox }); // ready
注意 :唯一的条件是具有title
的div
应该跟随每个锚点,否则.next()
方法将失败。 您可以自定义脚本,以便从代码中的其他位置获取标题,而不pipe标题是否位于锚点之后,例如获取标题标识:
this.title = $('#myCaption').html();
更新(2012年6月15日) :如果使用v2.0.6 +,您应该使用beforeShow
而不是afterLoad
callback选项。
我最终在functions.php
文件中使用了一个钩子而不是javascript,以便在检索每个图库图像时设置<a>
的title属性:
function add_title_attachment_link($link, $id = null) { $id = intval( $id ); $_post = get_post( $id ); $post_title = esc_attr( $_post->post_excerpt ); return str_replace('<a href', '<a title="'. $post_title .'" href', $link); } add_filter('wp_get_attachment_link', 'add_title_attachment_link', 10, 2);
这将从附件中返回标题并将其添加到<a>
标记,作为大多数JQuery lightbox插件的标题。
例如,在Fancybox中:
$(".fancybox").fancybox({ helpers : { title : { type : 'over' } } });
标题现在将出现在灯箱中。