Javascript 在追加元素后,事件click对jquery中追加的元素不起作用

Javascript 在追加元素后,事件click对jquery中追加的元素不起作用,javascript,jquery,Javascript,Jquery,我正在通过Jquery追加项。但追加后无法绑定追加项上的事件。我附加如下>> var item = '<div id="'+newInputId+'" class="col-md-9" style="padding-right: 0px;">'; item += '<input id="txtInScope" type="text" value="'+currentScopeVal+'" class="form-control" readonly="readonly"

我正在通过Jquery追加项。但追加后无法绑定追加项上的事件。我附加如下>>

var item =  '<div id="'+newInputId+'" class="col-md-9" style="padding-right: 0px;">';
    item += '<input id="txtInScope" type="text" value="'+currentScopeVal+'" class="form-control" readonly="readonly"/>';
    item += '</div>';
    item += '<div id="inScopeActionDiv'+newInputId+'" class="col-md-3"  style="padding-left: 2px;">';
    item += '<button type="button" class="btn btn-warning btn-sm remButton" title="Remove this item">Remove Item</button>';
    item += '</div>';    
$('#inScopeDiv').append(item);

但没有结果。有人可以帮我吗?

将其绑定到一个不是动态的但始终位于DOM中的父级上。

每次添加项目时,您都需要添加侦听器:

$('#inScopeDiv').append(item)
            .off() //unbind old listeners so no duplicate listeners
            .on('click', '.remButton', function() {
               alert("working");
            });

可以使用将附加的div存储在变量中,然后可以将click事件直接附加到变量。看到它工作了吗

$(.appendDiv”)。单击(函数(){
var item=“我是一个新部门!”;
var added_div=$(item).appendTo(“.container”);
追加div.click(函数(){
警惕(“工作!”);
});
});
jquery方法live不再有效:

从jQuery 1.7开始,.live()方法已被弃用。请使用.on()附加事件处理程序。较旧版本的jQuery用户应优先使用.delegate()而不是.live()

资料来源:

关于事件附件的解释很少:

您必须认识到,在调用addevent函数(在本例中使用jQuery的on方法)之前,存在要添加事件的目标

另一方面,jquery提供了一种方式,使work成为事件附件,而不存在之前的元素:

$('html').on('click', '#inScopeDiv .remButton', function () {
  alert('works!');
});

#inScopeDiv
也会动态追加。绑定到
文档
或未动态附加的某个otehr父级。inScopeDiv不是动态的。inScopeActionDiv是动态的。您可以找到
inScopeDiv
,它不是动态的。您是否尝试过使用“body”或“document”(就像您mulder建议的那样)?
$(".appendDiv").click(function () {
      var item = "<div>I'm a new div!</div>";
      var appended_div = $(item).appendTo(".container");
      appended_div.click(function () {
              alert("Working!");
      });
});
$('.remButton').live('click', function() {
    alert('live');
})
$('html').on('click', '#inScopeDiv .remButton', function () {
  alert('works!');
});