首先请记住,我是网页设计、JS 和所有这些方面的新手。任何建议都将不胜感激:) 我将这个 img 图标(serviceIcon)定位为“绝对”,并带有它们的特定类(serviceHardware,...)。
<div class="servicesBox">
<img class="serviceIcon serviceHardware" />
<img class="serviceIcon serviceSoftware" />
<img class="serviceIcon serviceNetwork" />
</div>
很简单:鼠标悬停改变未悬停项目的不透明度并调整悬停项目的大小;mouseleave 将所有动画设置为之前的状态;单击将单击的 img 动画到角落,应该删除 serviceIcon 类(以避免触发 mouseover/mouseleave,对吗?)并向下移动(在示例中)未单击的 img,并将 serviceSelected 类添加到单击的项目。
$("img.serviceIcon").click(function(){
$("img.serviceIcon").not(this)
.animate({
top:'45px',
});
$(this).removeClass("serviceIcon")
.animate({
left:'150px'
}, 300, function(){
origLeft = $(this).css('left');
$(this).addClass("serviceSelected");
//alert(origLeft);
});
});
但是正如您在此处看到的(http://jsfiddle.net/rcvmQ/4/),单击的 img 不断触发对应于 serviceIcon 类的 mouseover/mouseleave 事件(单击时已删除),如果您检查元素,您将看到它不再有 serviceIcon 类了。我在这里做错了什么?可能是全部?身份证。
实际上,它添加了 serviceSelected 类,但是如果单击它,则永远不会触发该类的单击事件。奇怪的。我已经在 Firefox 和 safari 中对此进行了测试,并且两者的行为都相同。
我在 serviceItem 的单击事件中添加了额外的验证代码,检查它是否具有 serviceSelected 类,这根本不是逻辑的。即使它有效,我也拒绝使用它!谢谢!
编辑:关于 mouseover/mouseleave 的代码
$("img.serviceIcon").mouseover(function(){
$(".serviceIcon").not(this)
.animate({
opacity:'0.3'
}, 100);
$(this).animate({
width :'25px',
height :'40px',
opacity :1
},200);
});
$("img.serviceIcon").mouseleave(function(){
$("img.serviceIcon").stop(true,true)
.animate({
width :'20px',
height :'40px',
opacity :'1'
},100);
});