hover()jquery只适用于第一项?

时间:2014-09-09 17:17:29

标签: javascript jquery

我喜欢这个

$('#link').hover(function(){
                $(this).find('.actionBlck').css('opacity','0.85');
            },function(){
                $(this).find('.actionBlck').css('opacity','1');
            });

        });

我在foreach循环中有像<a id='link' href=".$link." target='_blank'>这样的html。它工作,但只有第一项才会产生效果,为什么?我检查我的html,它有多个链接ID。

3 个答案:

答案 0 :(得分:3)

id是唯一的。您只能在页面上拥有一个具有特定id的元素。但是,类可以重复。类旨在提供公共元素的聚类和分组。 Ids是选择单个元素的手段。

    $('.link').hover(function(){
            $(this).find('.actionBlck').css('opacity','0.85');
        },function(){
            $(this).find('.actionBlck').css('opacity','1');
        });

    });

<a class='link' href=".$link." target='_blank'>这样的html应该有用。

答案 1 :(得分:0)

您正在通过ID进行选择。 Id应该是独一无二的。因此,当你通过id jquery选择时,只返回一个元素

所以如果你有这个:

<a id='link' href=".$link." target='_blank'>...</a>
<a id='link' href=".$link." target='_blank'>...</a>

然后你选择这样:

$('#link').hover(function(){
    // do something
}

只会将处理程序附加到第一个项目。

改为使用班级:

<a class='link' href=".$link." target='_blank'>...</a>
<a class='link' href=".$link." target='_blank'>...</a>

然后附上一个像这样的处理程序:

$('.link').hover(function(){
    // do something
}

在jquery中使用id选择器(#)时,它将被转换为对DOM函数getElementById的调用。请注意,它的“元素”不是“元素”而只返回单个元素。

答案 2 :(得分:0)

因为ID属性是唯一标识符。意味着多个元素不能具有相同的id。

改为使用类,如下所示:

<a class='link' href=".$link." target='_blank'>

并将jQuery选择器更改为$('.link')