2011-05-31 77 views
0

在項目上工作需要對主頁有特定效果。當用戶將鼠標懸停在導航欄中的鏈接上時,該鏈接將突出顯示,並顯示頁面上的相應縮略圖。每個鏈接/縮略圖都有類,我們現在設置的方式是在懸停時搜索具有相同類的元素。只是想知道是否有更好的方式去做這件事。謝謝。突出顯示鏈接懸停時的相應圖像

(頁面的佈局對左側的鏈接中的「主」容器,填寫頁面的那安息的拇指)

$('#homeCatNav li a, #homeThumbsUlHolder li img').hover(function(e){ 
    var $thisA = $(this), 
     $thisClass = $(this).attr("class"); 

    if (e.type.toLowerCase() === 'mouseenter') { 
     $('li.imgToHighlight').find('img'+'.'+$thisClass).addClass('hoverElem'); 
     $('li.homeArtNameList').find('a'+'.'+$thisClass).addClass('hoverElem');    
    } 
    if (e.type.toLowerCase() === 'mouseleave') { 
     $('li.imgToHighlight').find('img').removeClass('hoverElem'); 
     $('li.homeArtNameList').find('a').removeClass('hoverElem'); 
    } 
}); 

回答

0

我認爲你是事件處理程序複雜爲什麼剛纔不喜歡這樣

$("'#homeCatNav li a, #homeThumbsUlHolder li img").hover(mouseOver, mouseOut); 

function mouseOver() { 
    $thisClass = $(this).attr("class"); 
    $('li.imgToHighlight').find('img'+'.'+$thisClass).addClass('hoverElem'); 
    $('li.homeArtNameList').find('a'+'.'+$thisClass).addClass('hoverElem'); 
} 

function mouseOut() { 
    $thisClass = $(this).attr("class"); 
    $('li.imgToHighlight').find('img').removeClass('hoverElem'); 
    $('li.homeArtNameList').find('a').removeClass('hoverElem'); 
} 
+0

這娃變量缺失。 – timbooo 2011-05-31 15:45:02

0

我會切換到「相對」,但它並不真正的問題:

$('#homeCatNav li a, #homeThumbsUlHolder li img').hover(function(){ 
     var $thisA = $(this), 
     $thisRel = $thisA.attr("rel"); 
     $('li.imgToHighlight').find('img[rel'+$thisRel+']').addClass('hoverElem'); 
     $('li.homeArtNameList').find('a[rel'+$thisRel+']').addClass('hoverElem');    
    },function(){ 
     $('li.imgToHighlight').find('img').removeClass('hoverElem'); 
     $('li.homeArtNameList').find('a').removeClass('hoverElem'); 
}); 
+0

任何原因,特別是切換到Rel?只是一個參考清酒或速度? – 2011-05-31 15:50:41

+0

如果你想在css中使用這個類,並且不影響這兩個元素,例如:(homeCatNav和homeArtNameList)將具有相同的類名,但這不是一個大問題 – AlexC 2011-05-31 15:53:16

+0

啊是啊,想過但我只是使用從數據庫中提取的名稱作爲班級,它應該避免任何這些特殊情況。感謝您的意見。 – 2011-05-31 16:27:28