如何在使用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 

注意 :唯一的条件是具有titlediv应该跟随每个锚点,否则.next()方法将失败。 您可以自定义脚本,以便从代码中的其他位置获取标题,而不pipe标题是否位于锚点之后,例如获取标题标识:

 this.title = $('#myCaption').html(); 

更新(2012年6月15日) :如果使用v2.0.6 +,您应该使用beforeShow而不是afterLoadcallback选项。

我最终在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' } } }); 

标题现在将出现在灯箱中。