使用此显示图像的 alt 标签 - jquery
客户希望在悬停时显示 alt 标签文本(并且无法确信它应该是标题,唉)。这是我所得到的,但我只需要显示悬停的 img 的 alt 标签,而不是全部。我尝试删除“每个”,但它坏了(我知道我对此不太擅长)。如何修复它:
$("ul.thumb li img").hover(function() {
$(this).each(function(i, ele) {
$("li").append("<div class=alt>"+$(ele).attr("alt")+"</div>");
$(this).mouseleave(function(event){
$(".alt").css('display','none');
});
});
});
A client wants the alt tag text to appear when hovered (and can't be convinced it should be title, alas). This is as far as I got, but I need only the hovered img's alt tag to display, rather than all of them. I tried removing 'each' but it broke (I know I'm not very good at this). How do I fix it:
$("ul.thumb li img").hover(function() {
$(this).each(function(i, ele) {
$("li").append("<div class=alt>"+$(ele).attr("alt")+"</div>");
$(this).mouseleave(function(event){
$(".alt").css('display','none');
});
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
演示
DEMO
您可以分两步完成:
DEMO
You can do it in two steps:
DEMO
您不需要
.each()
,并且可以将mouseleave
作为.hover()
的第二个参数进行处理:工作演示在 http://jsfiddle.net/alnitak/dPVCN/
注意:我删除了
.alt
div完全在鼠标移开时进行,否则它会一遍又一遍地附加替代文本。更好的解决方案可能是预先创建所有 alt div,然后根据需要使用
.show()
或.hide()
它们。You don't need the
.each()
, and you can handle themouseleave
as the second parameter to.hover()
:Working demo at http://jsfiddle.net/alnitak/dPVCN/
NB: I'm remove the
.alt
div altogether on mouseout, since otherwise it would keep appending the alt text over and over again.A better solution might be to pre-create all of the alt divs, and then just
.show()
or.hide()
them as appropriate.TheSuperTramp 的解决方案是最好的方法,但我稍微调整了它以提高性能。
演示:http://jsfiddle.net/5dxhC/1/
TheSuperTramp's solution is the best approach, but I've tweaked it slightly to improve performance.
Demo: http://jsfiddle.net/5dxhC/1/
有两个问题:
div
附加到所有li
元素,而不仅仅是当前元素(请参阅@cdeszaq的答案)div
onmouseleave
,隐藏所有未来的.alt
元素。您应该在mouseout
上使用.remove()
而不是 css 属性There are two problems:
div
to allli
elements instead of just the current one (see @cdeszaq's answer)div
onmouseleave
, making all future.alt
elements hidden. You should use.remove()
instead of a css property onmouseout