Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择动态创建并侦听2个或更多事件的元素_Javascript_Jquery_Html_Javascript Events - Fatal编程技术网

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

Javascript 选择动态创建并侦听2个或更多事件的元素,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,在我正在编写的代码中,我有一个动态创建的div,带有一个输入框和一个按钮。当它们的事件发生时,它们具有类似的功能。但也有一些小的区别。例如,如果单击按钮,则查找作为输入值的同级值,然后删除div并替换包含新输入的div和按钮。但是如果用户按enter键查找$(this).val(),并对div执行相同的操作,则函数类似。我想将这些事件处理程序组合到发生的适当事件中 我想做这样的事情 $(“body”)。在('click keypress','button input',函数(e){ 我需要on(

在我正在编写的代码中,我有一个动态创建的div,带有一个输入框和一个按钮。当它们的事件发生时,它们具有类似的功能。但也有一些小的区别。例如,如果单击按钮,则查找作为输入值的同级值,然后删除div并替换包含新输入的div和按钮。但是如果用户按enter键查找$(this).val(),并对div执行相同的操作,则函数类似。我想将这些事件处理程序组合到发生的适当事件中

我想做这样的事情

$(“body”)。在('click keypress','button input',函数(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");
            }

        }
    })

});
$(文档).ready(函数(){
变量计数器=0
新功能(el,i){
$(el).删除()
$(“正文”)。附加(“Go”)
}
$(“正文按钮,正文输入”)。在('点击按键',功能(e){
计数器++;
var目标=$(e.target);
if(target.is('button')){
对于(变量i=0;i
html:

Go

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

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

Javascript:

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


谢谢你的回答。这个逗号是缺少的部分。我很好奇你为什么会建议添加类。提醒我。我打算在我的代码中添加一个类,比如
。输入
。按钮
,而不使用html元素。为什么选择类而不是元素更好?@user2537537因为会有be 100
输入
按钮
,但是只有很少的兴趣。使用
普通类
只会选择感兴趣的元素。而且,
选择器比
元素
选择器更快。
$("body").on('click keypress' ,'button, input', function(e) {
$(document.body).on('click keypress', '.myClass', function(e) {
<input class ="input myClass" />
<button class="go myClass">Go</button>