使用jQuery,如何在div内部悬停时更改图像?

时间:2010-04-24 11:48:34

标签: jquery image

当您将鼠标悬停在鼠标上时,我有以下jQuery代码替换图像,但它似乎不起作用。下面的代码有什么问题?

$(function() {
$("div.delete img")
    .mouseover(function() {
        $(this).attr("src", "../../images/comment-hover-del.png");
    })
    .mouseout(function() {
        $(this).attr("src", "../../images/comment-del.png");
});
 });

这是我的HTML:

<div class="delete" id="26"><img src="../../images/comment-del.png" border="0"></div>

4 个答案:

答案 0 :(得分:4)

您可以稍微重新排列它,如下所示:

$(function() {
  $("div.delete").hover(function() {
     $("img", this).attr("src", "../../images/comment-hover-del.png");
  }, function() {
     $("img", this).attr("src", "../../images/comment-del.png");
  });
});

这是在div悬停时触发的,因为当图像发生变化时可能会有轻微的闪烁,从而导致图像崩溃并在下一个图像加载之前触发mouseout。如果您使用上述方法来防止此行为,我会为<div>指定宽度/高度,如果您使用当前方法,则为图像指定宽度/高度。

或者,您可以为div background-image css属性和<div>本身提供悬停(完全删除<img>)并在CSS中执行此操作,例如这样:

div.delete { 
  width: 100px; 
  height: 100px; 
  background-image: url('../../images/comment-del.png') center;
}
div.delete:hover { 
  background-image: url('../../images/comment-hover-del.png') center;
}

答案 1 :(得分:0)

试试这个:

$(function() {
$("div.delete")
    .mouseover(function() {
        $(this).find('img').attr("src", "../../images/comment-hover-del.png");
    })
    .mouseout(function() {
        $(this).find('img').attr("src", "../../images/comment-del.png");
});
 });

答案 2 :(得分:0)

实际上,我的原始代码还可以,但我刚刚意识到图像和div是动态放置的。因此,我需要使用下面的直播活动。

(我意识到这一点后,一些好的答案也没有用,这没有任何意义。)

$('div.delete img').live('mouseover mouseout', function(event) {
    if (event.type == 'mouseover') {
        $(this).attr("src", "../../images/comment-del-hover.png");
    } else {
         $(this).attr("src", "../../images/comment-del.png");
    }
});

答案 3 :(得分:0)

你不能做这样的效果。如果您想要更改src并且还能够为其设置动画,请执行以下操作:

$("#clone_el").css("z-index",2);
ele = $("#clone_el").clone().css({position:"relative","top":"-"+$("#clone_el").eq(0).height()+"px","z-index":"1"}).attr("src","/path/to/new/src");

$("#clone_el").after(ele).fadeOut();