使用以下jQuery代码:
$(document).ready(function() {
$('a[title]').mouseover(function () {
$this = $(this);
$this.data('title', $this.attr('title'));
// Using null here wouldn't work in IE, but empty string will work just fine.
$this.attr('title', '');
}).mouseout(function () {
$this = $(this);
$this.attr('title', $this.data('title'));
});
$('[data-title]').click(function(e) {
e.preventDefault();
$this = $(this);
$this.attr('title', $this.data('title'));
$this.removeAttr('data-title');
$(this).click();
});
});
此代码的原因是仅在title
标记悬停时从<a>
标记中删除mediaboxadvanced
属性,因为我碰巧需要此插件的title属性data-title
,因为它使用title属性作为图像弹出的标题,这就是我想要的。我在悬停时将数据标题存储在数据标题内部的原因是因为我不希望HTML标记显示在标题中并且无法找到用于删除此HTML标记的解决方案(这很难看到)通过工具提示(来自title属性)显示。所以,说到这一点,我认为我们根本不需要工具提示,但是我无法在<a>
属性上重新分配title属性。
实际上,如果我们可以在Click事件发生之前以某种方式将其分配回{{1}}标记,那将是很好的,这正是我在上面的代码中尝试做的事情。但由于某种原因,这里没有分配title属性......
答案 0 :(得分:1)
有两点
data-title
元素相关联的a
属性,您只有title
属性。所以你需要更改选择器click
处理程序中的单击处理程序,触发器无限期递归导致Maximum recursion depth exceeded now
错误更新:
不需要所有这些东西,插件为我们提供了使用linkmapper
扩展它的工具。
在插件文件的底部有
Mediabox.scanPage = function() {
// if (Browser.Platform.ios && !(navigator.userAgent.match(/iPad/i))) return; // this quits the process if the visitor is using a non-iPad iOS device (iPhone or iPod Touch)
// $$('#mb_').each(function(hide) { hide.set('display', 'none'); });
var links = $$("a").filter(function(el) {
return el.rel && el.rel.test(/^lightbox/i);
});
// $$(links).mediabox({/* Put custom options here */}, null, function(el) {
links.mediabox({/* Put custom options here */}, null, function(el) {
var rel0 = this.rel.replace(/[\[\]|]/gi," ");
var relsize = rel0.split(" ");
// return (this == el) || ((this.rel.length > 8) && el.rel.match(relsize[1]));
var relsearch = "\\["+relsize[1]+"[ \\]]";
var relregexp = new RegExp(relsearch);
return (this == el) || ((this.rel.length > 8) && el.rel.match(relregexp));
});
};
将其更改为
Mediabox.scanPage = function() {
// if (Browser.Platform.ios && !(navigator.userAgent.match(/iPad/i))) return; // this quits the process if the visitor is using a non-iPad iOS device (iPhone or iPod Touch)
// $$('#mb_').each(function(hide) { hide.set('display', 'none'); });
var links = $$("a").filter(function(el) {
return el.rel && el.rel.test(/^lightbox/i);
});
// $$(links).mediabox({/* Put custom options here */}, null, function(el) {
links.mediabox({/* Put custom options here */}, function(el) {
//This is the linkmapper function
elrel = el.rel.split(/[\[\]]/);
elrel = elrel[1];
return [el.get('href'), $(el).data('title'), elrel]; // thanks to Dušan Medlín for figuring out the URL bug!
}, function(el) {
var rel0 = this.rel.replace(/[\[\]|]/gi," ");
var relsize = rel0.split(" ");
// return (this == el) || ((this.rel.length > 8) && el.rel.match(relsize[1]));
var relsearch = "\\["+relsize[1]+"[ \\]]";
var relregexp = new RegExp(relsearch);
return (this == el) || ((this.rel.length > 8) && el.rel.match(relregexp));
});
};
然后使用title
来指定标记中的标题使用data-title
属性
演示:Plunker
答案 1 :(得分:0)
尝试将选择器从$('[data-title]')
更改为$('a[title]')
。