如何获取DOM中最接近的元素并向其添加事件侦听器

时间:2016-06-30 21:45:12

标签: jquery

下面是我的代码,代码的问题是我试图让enter键工作,当主要元素" newsletter-sign-up"通过添加事件监听器在其中包含数据。问题是这个" newsletter-sign-up"存在于基页上,但它也可以存在于"模态中#34;随机出现。我被告知我可以使用相同的" Id"通过使用.closest jquery ...但我的代码不断出现错误.addEventListener不是一个函数。这是代码:

// ============健康小贴士电子通讯上的主要新闻事件====================== / p>

$(function () {
    $('#sign-up-submit').closest('form').findByName("newsletter-sign-up")
    //    document.getElementById("newsletter-sign-up")
    .addEventListener("keypress", function (event) {         
            if (event.keyCode == 13) {
                event.preventDefault();
                document.getElementById("sign-up-submit").click();
            }
        });
});

1 个答案:

答案 0 :(得分:0)

由于它出现在模态弹出窗口中(表示您不知道它将放在DOM中的位置),您需要委派该事件。

以下内容应该这样做

$(function () {
    $(document).on('keypress', '#newsletter-sign-up', function (event) {         
        if (event.keyCode == 13) {
            event.preventDefault();
            $("#sign-up-submit").click();
        }
    });
});