选择动态创建并监听 2 个或更多事件的元素

selecting elements that are dynamically created and that listen to 2 or more events

在我正在编写的代码中,我有一个动态创建的 div,带有一个输入框和一个按钮。当他们的事件发生时,他们有类似的功能要做。但也有细微差别。例如,如果单击按钮,找到作为输入值的 siblings 值并删除 div 并替换包含新输入的 div 和一个按钮.但是如果用户按回车键找到 $(this).val() 并对 div 做同样的事情。所以功能是相似的。我想将这些事件处理程序组合到发生的正确事件中。

我想做这样的事情

$("body").on('click keypress' ,'button input', function(e){

我需要 on() 中的第二个参数,因为按钮和输入是动态创建的

如果我执行类似下面的操作,我认为事件处理程序不会附加到新创建的元素。

$(document).ready(function() {
    var counter = 0

    function giveNew(el, i) {
        $(el).remove()
        $("body").append("<button class='go" + " " + i + "' >Go</button>")
    }

    $("body button, body input").on('click keypress', function(e) {
        counter++;
        var target = $(e.target);
        if (target.is('button')) {
            for (var i = 0; i < counter; i++) {
                giveNew(this, i)
            }

            console.log($(this).attr("class"))
        } else if (target.is('input')) {
            if (e.which == 13) {
                alert("input");
            }

        }
    })

});

html:

<input class = "input"> <button class="go">Go</button>

在元素之间添加逗号以绑定 multiple 元素上的事件

$("body").on('click keypress' ,'button, input', function(e) {

我建议您向所有目标元素添加一个 class 并使用该 class 绑定事件。

Javascript:

$(document.body).on('click keypress', '.myClass', function(e) {

Html:

<input class ="input myClass" />
<button class="go myClass">Go</button>