2016-09-16 86 views
0

在這種情況下,當我將鼠標懸停在任何列上時,頁面中的所有元素都會淡入。我如何才能只使用當前懸停的元素淡入而不休息?選擇單個元素的正確語法是什麼?

$('.column1, .column2, .column3, .column4, .column5').mouseenter(function() { 
    $(".p1").fadeIn(200); 
    $(this).animate({ 
     height: '100%' 
    }); 
}); 


$('.column1, .column2, .column3, .column4, .column5').mouseleave(function() { 
    $(".p1").fadeOut(200); 
    $(this).animate({ 
     height: '100px', 
    }); 
}); 

回答

2

使用this關鍵字來引用觸發事件的元素,像這樣:

$('.column1, .column2, .column3, .column4, .column5').mouseenter(function() { 
    $(this).fadeIn(200).animate({ 
     height: '100%' 
    }); 
}); 

$('.column1, .column2, .column3, .column4, .column5').mouseleave(function() { 
    $(this).fadeOut(200).animate({ 
     height: '100px' 
    }); 
}); 

另外請注意,您可以通過使用上的所有元素的公共類縮短代碼,使用hover()處理程序和fadeToggle()。試試這個:

$('.column').hover(function() { 
    $(this).fadeToggle(200).animate({ 
     height: $(this).height() == 100 ? '100%' : '100px' 
    }); 
}); 
+0

這對我不起作用,我不希望整個元素淡入淡出,只是裏面的文本,所以只是「.p1」類元素,但列應該可見。 – Sergi

+0

請將您的HTML添加到問題中。請注意,您只能動畫元素,而不是文字節點,因此您可能需要更改HTML。 –

+0

基本上,用我的原始代碼,如果我只有1列,它工作得很好,我懸停在列上,它由於動畫而上升,文本淡入淡出,但是當然它會觸發所有內容。 P1的元素,這就是我想要阻止的。 – Sergi