Javascript 在追加元素后,事件click对jquery中追加的元素不起作用
我正在通过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"
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!');
});