首页 > 解决方案 > 升级 jQuery 会破坏弹出子菜单

问题描述

当每个菜单项悬停时,我有代码显示带有弹出子菜单的菜单。

jQuery:

    <script type="text/javascript">
    $(document).ready(function() {
        var hoverAttributes = {
                speed: 10,
                delay: 100
        };
        $("#nav-home").bind("hover", hoverAttributes, function(){
            $("#subnav").children().hide();
            $("#sub-home").show();
        });
        $("#nav-library").bind("hover", hoverAttributes, function(){
            $("#subnav").children().hide();
            $("#sub-library").show();
        });
    });
    </script>

HTML:

    <div id="nav">
        <table align="right">
            <tr>
                <td id="menu">
                    <ul>
                        <li><a href="../home" id="nav-home">Home</a></li>
                        <li><a href="../library" id="nav-library">Library</a></li>
                    </ul>
                </td>
            </tr>
            <tr>
                <td id="subnav">
                    <ul id="sub-home">
                        <li><a href="../home/forum.jsp">Forums</a></li>
                        <li><a href="../home/news.jsp">News</a></li>
                        <li><a href="../home/about.jsp">About Us</a></li>
                    </ul>
                    <ul id="sub-library">
                        <li><a href="../library/resources.jsp">Resources</a></li>
                        <li><a href="../library/glossary.jsp">Glossary</a></li>
                        <li><a href="../library/references.jsp">References</a></li>
                    </ul>
                </td>
            </tr>
        </table>
    </div>

此代码使用 jquery-1.6.1.min.js 工作,但是当我升级到 jquery-1.12.4.min.js 时,弹出功能会中断。在页面加载时,第一个菜单项(主页)的子菜单已经展开。将鼠标悬停在它或其他菜单项上不会导致显示内容发生变化。

我发现该bind()操作在 jQuery 3.0 中已被弃用,但它应该仍然适用于 1.12.4,不是吗?我找不到任何关于或被弃用children()的记录。hide()show()

对于上下文,我对 jQuery 和 JavaScript 知之甚少。这是因为我必须修复别人的代码。

标签: javascriptjquery

解决方案


您是否尝试过将 .bind 更改为$(".selector").on("mouseover", function () {..});


推荐阅读