Javascript 通过函数向克隆对象添加事件侦听器

Javascript 通过函数向克隆对象添加事件侦听器,javascript,Javascript,我正在尝试克隆div并将eventlistener添加到该特定对象。问题是eventlistener应用于所有以前的对象,所以我想可能不可能通过克隆来实现。请参见下面的示例-当我添加例如3个div并更改其中任何一个选项时,它会发出3次警报,而不是一次。 简单地说,我想动态地将事件侦听器添加到克隆对象中,而不影响前面的对象 document.getElementById(“add_btn”).onclick=function(){ $('.lang div:first').clone().ins

我正在尝试克隆div并将eventlistener添加到该特定对象。问题是eventlistener应用于所有以前的对象,所以我想可能不可能通过克隆来实现。请参见下面的示例-当我添加例如3个div并更改其中任何一个选项时,它会发出3次警报,而不是一次。 简单地说,我想动态地将事件侦听器添加到克隆对象中,而不影响前面的对象

document.getElementById(“add_btn”).onclick=function(){
$('.lang div:first').clone().insertAfter($('.lang div:last'));
//var last_lang_div=$('.lang div:last');
添加更改事件();
}
函数add_onchange_event(){
this.addEventListener('change'),(函数(obj){
返回函数(){
警报(“应仅警报一次”);
}
})(本);;
}

英语
西班牙的
德国的
添加语言
  • 既然有jQuery,就使用它
  • 使用-在我的解决方案中不再需要,但现在我
  • 委托-并在select上使用类而不是ID
  • $(“添加btn”)。在(“单击”,函数(){
    $('.lang div:first').clone(true).insertAfter($('.lang div:last'));
    });
    $(“#包装器”).on(“更改”,“语言”,函数(){
    console.log(this.value);
    });
    
    
    请选择
    英语
    西班牙的
    德国的
    
    Add language
    jquery的
    clone(true)
    只有在通过jquery添加事件侦听器时才起作用,所以使用
    $(this)。在('change',handler)
    上,而不是(
    this.addEventListener('change',handler)
    @LukášJe ek欢迎您。请