我有一个带有图像作为按钮的示例导航列表。当用户将鼠标悬停在按钮上和单击鼠标时,按钮有两种附加状态。每个按钮都有相同的命名约定,因此对于后退按钮将有“back.jpg”、“back_over.jpg”和“back_down.jpg”。由于页面上会有几个按钮,我的目标是获取所选图像源的路径,然后通过附加/删除路径的适当部分来修改它。
我有一个工作示例,但我觉得它可以更优雅。例如,我很确定可以将 3 个图像路径中的每一个存储为变量并以某种方式传递它们。但是当我尝试该方法时,img src 不会正确附加或删除。我也知道这可以通过 CSS 实现,我已经做到了。这主要是为了增加我对jQuery的理解。
$(document).ready(function() {
$('li > img').bind('mouseenter mousedown mouseup mouseleave click', function(event) {
var overImgSrc = $(this).attr('src').match(/[^\.]+/) + '_over.jpg';
var downImgSrc = $(this).attr('src').replace('_over.jpg', '_down.jpg');
var upImgSrc = $(this).attr('src').replace('_down.jpg', '_over.jpg');
var outImgSrc = $(this).attr('src').replace('_over.jpg', '.jpg');
var evtType = event.type;
switch (evtType) {
case 'mouseenter':
$(this).attr('src', overImgSrc);
break;
case 'mousedown':
$(this).attr('src', downImgSrc);
break;
case 'mouseup':
$(this).attr('src', upImgSrc);
break;
case 'mouseleave':
if ($(this).attr('src', downImgSrc)) {
var downOutImgSrc = $(this).attr('src').replace('_down.jpg', '.jpg');
$(this).attr('src', downOutImgSrc);
}
else {
$(this).attr('src', outImgSrc);
}
break;
case 'click':
alert("Yowza!");
break;
default:
break;
}
});
});
HTML
<ul id="nav">
<li><img src="images/Back.jpg"></li>
<li><img src="images/Next.jpg"></li>
</ul>