javascript - jQuery .append 发生了多次。我该如何防止这种情况?

标签 javascript jquery function methods frontend

我查看了一些类似的帖子,但没有找到我正在寻找的解决方案。我试图仅附加一次 div#dropdownmenu。但是,当我将鼠标悬停在 div 上时,它会继续发生。任何帮助将不胜感激。

$(function () {
    if ($('div#dropmenu').length == 0) {
        $('#site_nav > ul > a').live('mouseenter', function () {
            $(this).append("<div></div>");
            $('#site_nav > ul > li a div').attr('id', 'dropmenu');
            $('div#dropmenu').html("<ul></ul>");
            $('div#dropmenu ul').html("<li><a>Mission</a></li><li><a>Story</a></li><li><a>Quality</a></li><li><a>Pledge</a></li><li><a>Bio</a></li>");
        });
    } else {
        $('#site_nav > ul > li > a').append("");
    }
});

最佳答案

您可以在函数处理程序执行后删除它。我给匿名函数起了个名字,以便于引用。

$(function () {
    if ($('div#dropmenu').length == 0) {
        $('#site_nav > ul > a').live('mouseenter', function f() {
            $(this).append("<div></div>");
            $('#site_nav > ul > li a div').attr('id', 'dropmenu');
            $('div#dropmenu').html("<ul></ul>");
            $('div#dropmenu ul').html("<li><a>Mission</a></li><li><a>Story</a></li><li><a>Quality</a></li><li><a>Pledge</a></li><li><a>Bio</a></li>");
            $(this).die('mouseenter', f);
        });
    } else {
        $('#site_nav > ul > li > a').append("");
    }
});

http://api.jquery.com/die/

关于javascript - jQuery .append 发生了多次。我该如何防止这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15791206/

相关文章:

javascript - CSS :When i click in one element two was clicked

javascript - 更改 IE 中脚本标签的innerHTML以显式加载google plusone按钮

javascript - 如何在 Photoshop 脚本中为值创建输入字段

javascript - 删除图像并在已删除部分中显示该删除的图像

JavaScript/jQuery - 获取当前元素跨度的值

CSS calc 的 jQuery 回退函数

php - 我可以在 PHP 中的不同函数之间共享变量吗?

function - Haskell:应用翻转两次(翻转类型)

javascript - React-notification-system - 在 JSON 输入上触发通知

javascript - nx 和 Lerna 和有什么不一样? (monorepos)