【问题标题】:jquery flyout menu triangle hoverjquery弹出菜单三角形悬停
【发布时间】:2013-12-28 03:57:10
【问题描述】:

我已经构建了一个弹出式菜单,并且在 mouseover mouseleave mousemove 时遇到了一些问题。对于方向,我使用三角形作为第一层(在链接内)。一切正常。如果我在链接上方,弹出窗口会打开,但是当我通过三角形时,菜单会关闭并再次打开。我不明白为什么,因为三角形是链接的一部分。

here the example

<a href="#" class="ml1a">Level 1<span class="arrow"></span></a>

$('.ml1a').mouseover(function(){
var num = this.id.replace('ml1aButton-','');
$(this).parent('li').addClass('ml1liHover');
$('.navMainOverlay').hide();
$('#mainNavOverlay-'+num).fadeIn(300);
});

【问题讨论】:

    标签: jquery mouseover flyout


    【解决方案1】:

    您似乎已将箭头放置在具有鼠标悬停效果的链接内。

    <a href="#" class="ml1a">Level 1<span class="arrow"></span></a>
    

    当您将鼠标移到Level 1&lt;span class="arrow"&gt;&lt;/span&gt; 上时会触发。

    编辑

    想到的几个选项:

    1)

    Level 1 和箭头放在一个容器中,然后只将鼠标悬停添加到Level 1。然后您可以相对于容器而不是链接来定位箭头。

    <div><a href="#" class="ml1a">Level 1</a><span class="arrow"></span></div>
    

    2)

    将 stopPropagation 添加到箭头的 mouseover 事件。这样在将鼠标移到箭头上时,其他所有内容都将被忽略。

    $('.arrow').mouseover(function(event) {
        event.stopPropagation();
    });
    

    3)

    使用 jQuery 绝对定位箭头。可能不是我会采用的方式,但这是一种选择。

    $('.arrow').css({top: positionOflink.top + 20, left: positionOflink.left + 50});
    

    【讨论】:

    • 所以你的意思是将span箭头放入div navMainOverlay中是一种解决方案。但是如何设置链接下的三角形?
    • 在我的回答中添加了一些选项。
    猜你喜欢
    • 2014-07-28
    • 2011-01-23
    • 2023-04-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多