最初に、私は Web デザイン、JS、およびこれらすべての初心者であることを覚えておいてください。どんな提案でも大歓迎です:)私はこのimgアイコン(serviceIcon)を特定のクラス(serviceHardware、...)で「絶対」に配置しています。
<div class="servicesBox">
<img class="serviceIcon serviceHardware" />
<img class="serviceIcon serviceSoftware" />
<img class="serviceIcon serviceNetwork" />
</div>
簡単です。マウスオーバーは、ホバーされていないアイテムの不透明度を変更し、ホバーされたアイテムのサイズを変更します。mouseleave は、すべてを以前の状態にアニメートします。クリックすると、クリックされた画像が隅にアニメーション化され、serviceIcon クラスを削除する必要があります (mouseover/mouseleave のトリガーを回避するためですよね?)。(例では) クリックされていない画像を下に移動し、クリックされたアイテムに 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);
});