leo*_*ora 4 jquery image hover
当我将鼠标悬停在按钮图像上时,我有以下代码来提供悬停效果:
$("img.hoverImage")
.mouseover(function () {
var src = $(this).attr("src").match(/[^\.]+/) + "_hover.png";
$(this).attr("src", src);
})
.mouseout(function () {
var src = $(this).attr("src").replace("_hover", "");
$(this).attr("src", src);
});
Run Code Online (Sandbox Code Playgroud)
这非常有效.我现在有一个额外的要求:
我连续三个按钮都有class ="hoverImage".
<a class="imageLink" href=""><img class="hoverImage" src="/Content/Images/1.png"/></a>
<a class="imageLink" href=""><img class="hoverImage" src="/Content/Images/2.png"/></a>
<a class="imageLink" href=""><img class="hoverImage" src="/Content/Images/3.png"/></a>
Run Code Online (Sandbox Code Playgroud)
我仍然希望保持这种悬停效果,但现在我也想改变它,所以当我点击图像时,它会保持显示悬停图像(即使我将鼠标移出该图像).当我点击另一个按钮时,它应该从其他按钮中移除悬停.
注意:单击图像链接不会重定向到新页面(它们只是从js文件中调用一些ajax)
使用jQuery扩展以下代码以支持此功能的最佳方法是什么?看来我需要在单击项目后禁用mouseout处理程序,但我试图避免使用复杂的解决方案.
Jui*_*ter 10
您可以使用class/data/attr之一跟踪点击图像的活动状态,这样的事情就可以完成工作.
$("img.hoverImage").mouseover(function(){
if ($(this).is('.activeImage')) return;
var src = $(this).attr("src").match(/[^\.]+/) + "_hover.png";
$(this).attr("src", src);
}).mouseout(function(){
if ($(this).is('.activeImage')) return; // Skip mouseout for active image
var src = $(this).attr("src").replace("_hover", "");
$(this).attr("src", src);
}).click(function(){
// remove previous active state
$('.activeImage').not(this).removeClass('activeImage').trigger('mouseout');
// set new active state
$(this).addClass('activeImage');
return false;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4998 次 |
| 最近记录: |