使用jQuery,我可以将元素作为目标,仅在父元素悬停时显示其子元素吗?

时间:2011-08-09 20:23:34

标签: javascript jquery html css

好的,所以我目前正在制作一个页面,其中有两个元素,父母和孩子。

<div id="parent">Hi 
<span class="child">Bye</class> 
</div>

我想要的是在父元素悬停时显示子元素。所以我在jQuery中创建了一个让我这样做的函数。

function icondisplay(parentId){

 $(parentId).mouseenter(function() {

    $('.child').show();
});

$(hover).mouseleave(function() {

    $('.child').hide();

    });

}

我遇到的问题是页面中有多个父项具有不同的ID,但子元素都是相同的类。因此,当我将鼠标悬停在任何父元素上时,会立即显示所有子元素。如何只在父显示中创建子元素,而不通过并为每个子元素赋予一个唯一的类/ id然后更改我的函数?

谢谢

8 个答案:

答案 0 :(得分:7)

不要使用jQuery,请使用CSS。

.child {
    display: none;
}
*:hover > .child {
    display: inline;
}

我不愿意添加这个,因为CSS方法更有意义,但是我们开始:如果你必须使用jQuery,请使用:has( > .child)

$("div:has(> .child)").hover(function()
    $("> .child", this).show();
}, function() {
    $("> .child", this).hide();
});

答案 1 :(得分:5)

您只需要更改选择父母的方式,然后选择孩子:

$('.parentElement').hover(function()
{
    $(this).find('.child').show();
}, function()
{
    $(this).find('.child').hide();
});

答案 2 :(得分:2)

你可以用CSS做到这一点。假设HTML类似于:

<div class="parent">
    <div class="child"></div>
</div>

你可以这样做:

.child { display: none; }
.parent:hover > .child { display: inline; }

答案 3 :(得分:2)

我会假设这样的事情:http://jsfiddle.net/ex2nJ/1/会解决你的问题。对于$("div"),你可以放入你的函数来查找任何父ID。但是,您甚至可能不需要。

答案 4 :(得分:1)

http://api.jquery.com/child-selector/

$(parentId).mouseenter(function(){
    $(parentId > '.child').show();
});

答案 5 :(得分:0)

会做什么

$(this).find('.child')

$('.child', this)

答案 6 :(得分:0)

如下所示更改

 $(parentId).mouseenter(function() {

    $(this).find('.child').show();
});

答案 7 :(得分:0)

当然可以

$('#parent').hover(function(){
    $(this).children().show();
},function(){
    $(this).children().hide(); 
});

http://jsfiddle.net/NkAnR/

并确保修复结束 span </class>标记