2015-04-17 41 views
2

我有 li div有圖像的鏈接內(所以他們四個環節和四象),但我不明白爲什麼懸停功能在這裏不起作用。懸停功能不起作用

的錯誤是:

element.hover是不是一個函數:

var element =$("li div") 
var element_link = element.find("a"); 
var element_img = element.find("img"); 
element_img.css("opacity","0.5"); 
element_link.each(function(index, element) { 
    element.hover(
    function(){element_img[index].animate({opacity:1}),250}, 
    function(){element_img[index].animate({opacity:0.5}),250} 
    ); 
}); 

我怎樣才能解決這個問題呢?

+2

您忘記關閉.'animate'函數,應該像這樣'animate({opacity:1},250);' –

+2

'每個循環內的'element'不是一個jQuery對象,因爲您正在重新定義它,但一個DOM節點元素,沒有得到任何'hover'方法。使用例如:'$(element).hover(...)' –

+0

@SalvatoreEsposito在這裏重新定義它'.each(function(index,element)'然後看DOC:https://api.jquery.com/each/ –

回答

3

您不需要在jQuery元素集合上使用each()。你可以簡單地使用下面的代碼懸停適用於所有的element_link S的:

element_link.hover(
    function(){$(this).siblings('img').animate({opacity:1}),250}, 
    function(){$(this).siblings('img').animate({opacity:0.5}),250} 
); 
+0

但是在這個wat中怎麼可以使用索引? – Salvio

+0

@SalvatoreEsposito對不起,沒有看到'element_link'和'element_img'之間的區別,我的壞 –

+0

@SalvatoreEsposito好的,我忽略了。它不需要索引(也不是element_link數組) –

3

我以這種方式解決:

var element =$("li div"); 
var element_link = element.find("a"); 
var element_img = element.find("img"); 
element_img.css("opacity","0.5"); 

element_link.each(function(index, element) { 
    $(element).hover(
    function(){$(element_img[index]).animate({opacity:1},250)}, 
    function(){$(element_img[index]).animate({opacity:0.5},250)} 
); 
}); 

感謝狼和艾米特太(那裏是一個錯誤動畫功能)。