次のように画像を使用している 3 つの「タブ」があります。
各タブには 3 つの画像があります:-
- bookaccount.png (デフォルト - オレンジ)
- bookaccount-a.png (アクティブ - 白)
- bookaccount-h.png (ホバー - 青)
bookcash.png と bookguest.png も同様です。
デフォルトでは、「Guest」をアクティブなタブのままにし、他のタブをオレンジ色にします。これは私が持っているものです:
<div id="main-online-user">
<a href="javascript:void(0)" onclick="changesrc('main-online-frame','http://www.marandy.com/one2oneob/login-guest.php')"><img alt="One 2 One Guest" id="img-onlinebooking-guest" class="left" src="images/bookguest-a.png" /></a>
<a href="javascript:void(0)" onclick="changesrc('main-online-frame','http://www.marandy.com/one2oneob/login.php')"><img alt="One 2 One Account" id="img-onlinebooking-acc" class="left" src="images/bookaccount.png" /></a>
<a href="javascript:void(0)" onclick="changesrc('main-online-frame','http://www.marandy.com/one2oneob/login-guest.php')"><img alt="One 2 One Cash" id="img-onlinebooking-cash" class="left" src="images/bookcash.png" /></a>
</div>
ホバーイベントについては、現時点では次のようにしています:-
$("#img-onlinebooking-guest").hover(function() {
$(this).attr("src", "images/bookguest-h.png");
});
$("#img-onlinebooking-guest").mouseleave(function() {
$(this).attr("src", "images/bookguest.png");
});
問題は、(Guest is active - white) ということです。その上にカーソルを合わせると、その要素を離れると、まだアクティブなタブであるときに画像がオレンジ色 (デフォルト) に戻ります。
私ができるようにしたいのは、次のいずれかです:-
画像がアクティブな要素である場合、その上にカーソルを置いても何も起こりません。(これはおそらくより良いオプションです)
または、アクティブな要素がホバーされている場合、mouseout で、mouseenter イベントの前の色に戻ります。
どうすればいいのかわからないので、助けていただければ幸いです!
(jQuery タブを使用できることはわかっていますが、クライアントはこれらの画像を必要としているため、選択の余地がありません)
編集::
「アクティブ」クラスを #img-onlinebooking-guest に追加し、jQuery を次のように変更しました:-
$("#img-onlinebooking-guest").click(function() {
$(this).addClass('active');
$('#img-onlinebooking-cash, #img-onlinebooking-acc').removeClass('active');
$(this).attr("src", "images/bookguest-a.png");
$('#img-onlinebooking-acc').attr("src", "images/bookaccount.png");
$('#img-onlinebooking-cash').attr("src", "images/bookcash.png");
});
$("#img-onlinebooking-acc").click(function() {
$(this).addClass('active');
$('#img-onlinebooking-guest, #img-onlinebooking-cash').removeClass('active');
$(this).attr("src", "images/bookaccount-a.png");
$('#img-onlinebooking-guest').attr("src", "images/bookguest.png");
$('#img-onlinebooking-cash').attr("src", "images/bookcash.png");
});
$("#img-onlinebooking-cash").click(function() {
$(this).addClass('active');
$('#img-onlinebooking-guest, #img-onlinebooking-acc').removeClass('active');
$(this).attr("src", "images/bookcash-a.png");
$('#img-onlinebooking-guest').attr("src", "images/bookguest.png");
$('#img-onlinebooking-acc').attr("src", "images/bookaccount.png");
});
$('#img-onlinebooking-guest:not(.active)').hover(
function () {
$(this).attr("src", "images/bookguest-h.png");
},
function () {
$(this).attr("src", "images/bookguest.png");
});
$('#img-onlinebooking-acc:not(.active)').hover(
function () {
$(this).attr("src", "images/bookaccount-h.png");
},
function () {
$(this).attr("src", "images/bookaccount.png");
});
$('#img-onlinebooking-cash:not(.active)').hover(
function () {
$(this).attr("src", "images/bookcash-h.png");
},
function () {
$(this).attr("src", "images/bookcash.png");
});
非常に面倒ですが、とにかく、HTML 内にクラス「アクティブ」を追加した「ゲスト」タブでは機能しますが、他のタブでは正しく機能しません。「Cash」をクリックすると、画像がアクティブ(白)になりますが、クリック時にこの要素にクラス「active」を追加したため、白のままにする必要がある場合でも、マウスアウトでは色がオレンジ(デフォルト)に戻ります。
何か案は?
これはここで見ることができます。リンク