当另一个 div 悬停在 jQuery 上时,div 下拉

Posted

技术标签:

【中文标题】当另一个 div 悬停在 jQuery 上时,div 下拉【英文标题】:Div drop down when another div is hovered over jQuery 【发布时间】:2014-08-07 06:46:15 【问题描述】:

我有一个带有类 nav-divs 的 div,其中嵌套了另一个带有类下拉菜单的 div。我有这四个。当其中一个 nav-div 悬停在上方时,我希望 nav-div 正下方的下拉 div 向下滑动。如何确保只有 nav-div 下的下拉 div 悬停在 jQuery 上?

html -

<div id='container'>
    <div class='nav-divs'>Home 
        <div class='drop-down'></div>
    </div>
    <div class='nav-divs'>Products
        <div class='drop-down'></div>
    </div>
    <div class='nav-divs'>About 
        <div class='drop-down'></div>
    </div>
    <div class='nav-divs'>Contact 
        <div class='drop-down'></div>
    </div>
</div>

CSS -

#container 
    text-align: center;
    height: 30px;
    width: 100%;
    background-color: #e74c3c;


.nav-divs 
    background-color: #c0392b;
    height: 30px;
    width: 100px;
    display: inline-block;
    margin-left: 50px;
    line-height: 30px;
    font-family: Franklin Gothic Medium Cond;


.drop-down 
    height: 200px;
    width: 100px;
    background-color: #bdc3c7;
    display: none;
     

jQuery -

$('.nav-divs').mouseover(function()
    $('.drop-down').slideDown(500);
);

$('.nav-divs').mouseout(function()
    $('.drop-down').slideUp(300);
);

由于我对 jQuery 还很陌生,因此我们将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

使用find()使用当前元素引用通过使用$(this)获取触发事件的当前元素引用:

$('.nav-divs').mouseover(function()
$(this).find('.drop-down').slideDown(500);

);

【讨论】:

【参考方案2】:

它正在更新所有的子 div。尝试具体使用find() 关键字。像这样更新你的jquery。还将vertical-align:top 属性添加到您的inline-block 元素中以解决跳跃问题。

  $('.nav-divs').mouseenter(function()   
    $(this).find('.drop-down').slideDown(500);
  );

  $('.nav-divs').mouseout(function()
    $(this).find('.drop-down').slideUp(300);
  );

.nav-divs 
    background-color: #c0392b;
    height: auto;
    width: 100px;
    display: inline-block;
    margin-left: 50px;
    line-height: 30px;
    font-family: Franklin Gothic Medium Cond;
    vertical-align:top;

【讨论】:

【参考方案3】:

将您的 jquery 更改为:

$('.nav-divs').mouseover(function()
$(this).find('.drop-down').slideDown(500)
).mouseout(function()
$(this).find('.drop-down').slideUp(300);
);;

额外提示:我检查了您需要设置的 CSS 。落下 位置:绝对; 为了避免其他相关的div移动

http://jsfiddle.net/drukaman/ubntf4u7/

【讨论】:

这些答案对您有帮助吗? :-/【参考方案4】:

希望它可以帮助你,干杯:D

jsfiddle.net/stormspirit/7hpknkbo/

【讨论】:

【参考方案5】:

扩展ehsan的答案:这是小提琴:

$('.nav-divs').mouseover(function () 
    $(this).find('.drop-down').slideDown(500);

    //$('.drop-down').slideDown(500);

);

$('.nav-divs').mouseout(function () 
    $(this).find('.drop-down').slideUp(500);
    //$('.drop-down').slideUp(300);
);

http://jsfiddle.net/learner420/rp37duth/

【讨论】:

以上是关于当另一个 div 悬停在 jQuery 上时,div 下拉的主要内容,如果未能解决你的问题,请参考以下文章

当鼠标悬停在绝对div上时,jQuery禁用滚动

当另一个 div 悬停时更改一个 div 的文本颜色

将鼠标悬停在按钮上时如何更改 div 的文本?

Jquery:当悬停在菜单项上时,显示文本

当另一个子div悬停时,更改子div的外观

Jquery:在div的悬停时附加一个类并在不悬停时删除