单个div的Jquery悬停功能

时间:2012-10-12 06:49:21

标签: javascript jquery css

在我的画廊中,Div通过循环生成。在那里,我想为peticular(单人)Div留下悬停效果。在我的代码中,当我将托盘div效果悬停在整个div上时。

mycode的

.spanstyle{opacity:1;}  

while (loop){
<div class="waz">
<span class="spanstyle"></span>

</div>
}

$(".waz .spanstyle").each(function(i, val) {
    $(this).mouseenter(function() {
        $(this).stop().animate({ opacity: 1 }, 300);
    })
    $(this).mouseleave(function() {
        $(this).stop().animate({ opacity: .3 }, 100);
    })
});

有关详细信息,您可以查看项目: Project

4 个答案:

答案 0 :(得分:2)

试试这个并检查fiddle可能对您有所帮助

$(".waz").each(function(i, val) {
    $(this).mouseenter(function() {
       $('.spanstyle',this).show();
    })
   $(this).mouseleave(function() {
       $('.spanstyle',this).hide();
   })
});

答案 1 :(得分:1)

那是因为你给所有的div都给了相同的Id。尝试给他们不同的Id

var i=0;
while (loop){
<div id="'waz' + i"></div>
i++;
}

您的$("#waz .spanstyle").each( ...

将成为

$("div[id='^waz'] .spanstyle").each(...

答案 2 :(得分:1)

您有多个具有相同ID的元素。我会建议这样的事情:

while (loop){
    <div onmouseover="a" onmouseout="b"></div>
}

function a(){
     $(this).find('.spanstyle').stop().animate({ opacity: 1 }, 300);  
}

function b(){
     $(this).find('.spanstyle').stop().animate({ opacity: .3 }, 100);
}

编辑:

或者您可以对代码进行一些小改动:

$(".waz").each(function(i, val) {
    $(this).mouseenter(function() {
        $(this).children('.spanstyle').stop().animate({ opacity: 1 }, 300);
    })
    $(this).mouseleave(function() {
        $(this).children('.spanstyle').stop().animate({ opacity: .3 }, 100);
    })
});

答案 3 :(得分:1)

您的html页面似乎存在一些冲突。 WAZ 是某些div的类名,有些是ID(ID在文档中应该是唯一的)。我认为悬停效果来自以下代码(在您的页面中可用):

$(".waz").hover(function(){ 
    $(".spanstyle").slideToggle();  
});

不是您在问题部分发布的代码。请看看那些东西。