我正在使用它在新窗口中打开传出链接,但是当目标时 是一个图像,我想显示图像alt作为标题。
$("a[href*='http://']:not([href*='"+location.hostname+"']),
[href*='https://']:not([href*='"+location.hostname+"'])")
.addClass("external")
.attr("target","_blank")
.attr("title", "Open link in new window");
});
将此添加到.attr(“标题”)的最简单方法是什么?
答案 0 :(得分:1)
如果<img>
在锚点内,你可以这样做;
$("a[href*='http://'], a[href*='https://']").not("[href*='"+location.hostname+"']").each(function() {
var $this = $(this).addClass("external").attr("target","_blank");
var img = $this.children('img[alt]');
$this.attr("title", img.length ? img[0].alt : "Open link in new window");
});
此处有一些更改,您当前的选择器仅在第一个<a>
检查中查看http://
,但随后查看https://
中的所有元素检查,这样效率会更高。然后我们检查当前元素是否在内部有<img>
,如果有,并且它具有我们使用的alt
属性,否则我们给它默认标题。
或者,另一种方法,使用你拥有的东西(虽然改变选择器效率)然后设置包含图像的锚点的标题,如下所示:
$("a.external > img[alt]").each(function() {
$(this).parent().attr("title", this.alt);
});
答案 1 :(得分:0)
从听起来,您要链接到要在外部窗口中显示的图像。当您使用图像作为锚标记的目标时,它会引用实际的图像文件,而不是img
元素,因此没有与之关联的alt
标记。另一方面,如果图像包含在锚点中并且您单击它以打开一个新窗口,那么@ Nick的解决方案应该可以解决问题。