2015-04-17 90 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)} 
); 
}); 

感谢狼和艾米特太(那里是一个错误动画功能)。