我有2個錨鏈接(a.selector),當它被點擊時它有一個類應用到它的'活動箭頭',並且點擊也從另一個錨中移除同名的類以及將不透明度降低至0.2。jQuery不是和類
然後,當用戶將鼠標懸停在沒有應用「主動箭頭」的錨點上時,我們希望具有淡入淡出效果,以便在鼠標移動時進入完全不透明狀態,並在鼠標離開時回到0.2。
遇到的問題IM是,無論。不和:似乎沒有沒有工作如預期,懸停效果的作品,但如果我點擊的錨,而徘徊在「主動箭頭」級被應用,但是當mouseleaves時,即使應用了「活動箭頭」類,不透明度也會再次下降到0.2。另外懸停然後不起作用的另一個鏈接,有'主動箭頭'刪除。
這是一個很難解釋的位,所以繼承了一些希望有所幫助的代碼。
*//If a.selector doesn't have the class 'active-arrow' then run the hoverFade function*
$("a.selector").not(".active-arrow").hoverFade();
//Functions for first element
$('a.selector-1').click(function() {
$('a.selector-2').removeClass('active-arrow'); //Remove background image from corresponding element
$('ul#storage-items-2').fadeOut(1200).addClass('hide'); //Fade out then hide corresponding list
$(this).addClass('active-arrow', 'fast'); //Add background image to current element
$('ul#storage-items-1').removeClass('hide').fadeIn(1800); //Unhide and fade in the list
$('a.selector-2').fadeTo(500, 0.2); //Fade corresponding element
$(this).fadeTo(800, 1);//Fade this element to full opacity
});
我只包括用於TEH第一錨(a.selector-1)作爲第二錨定的代碼是相同的代碼,但只是改變的類名稱,以a.selector-2。
此外hoverFade函數是在一個單獨的文件,所以我們可以重新使用它。
jQuery.fn.hoverFade = function() {
return this.each(function(){
$(this).hover(
function() {
$(this).fadeTo(500, 0.8);
},
function() {
$(this).fadeTo(500, 0.2);
});
});
}
每個錨點鏈接淡入和淡出的UL爲好。
任何幫助表示最欣賞
感謝
賈爾斯
非常感謝你尼克! 我對jQuery很新,所以不知道.live或.delegate,它們非常有用。我最終使用了.live,這對我來說非常合適。 再次感謝隊友 – 2010-05-17 14:07:24
嗯抱歉,我認爲已經修復它,我認爲JavaScript在我的瀏覽器中運行緩慢,因爲它仍然不工作。 我嘗試使用.delegate,如果我使用它,當mouseleave的不透明度應用於設置ID的父元素時。 隨着.Live它的作品,取決於時間。如果我徘徊,然後點擊並等待其他事件運行,然後將鼠標移開它的罰款,但如果我點擊並立即移動鼠標,然後再次褪色a.selector。 任何想法? Cheers – 2010-05-17 14:18:14
@Giles - 我建議不要動畫活動箭頭或檢查不同的類,因爲在動畫速度下,該類不會被應用(匹配選擇器,就像我們想要的),直到它被* finshed *動畫班。因此,無論是$(this).addClass('active-arrow');',或者只是添加另一個類來跟蹤這個'$(this).addClass('aarrow')。addClass('active-arrow', ''fast');'並在選擇器中使用它來解決上面的問題,確保以相同的方式移除類,如下所示:'.removeClass('aarrow active-arrow');'(移除多個之間的空格) 。 – 2010-05-17 14:27:59