javascript - 追加元素后,事件单击对 jQuery 中的追加元素不起作用

标签 javascript jquery

我正在通过 jQuery 附加项目。但是追加后无法将事件绑定(bind)到追加的项目上。我附加如下:

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);

添加此内容后,我想在上面的 remButton 类上绑定(bind)一个单击事件,如下所示:

$("#inScopeDiv").delegate(".remButton", "click", function(){
    alert('you clicked me again!');
});
$('#inScopeDiv').on('click', '.remButton', function() {
    alert("working");
})
$('.remButton').live('click', function() {
    alert('live');
})

但是没有结果。接下来我可以尝试什么?

最佳答案

$('.remButton').live('click', function() {
    alert('live');
})

jquery 方法 live 不再有效:

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

来源:jquery live

关于事件附件的一些解释:

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

另一方面,jquery 存在一种在之前不存在元素的情况下使事件附件工作的方式:

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

关于javascript - 追加元素后,事件单击对 jQuery 中的追加元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39676055/

相关文章:

javascript - Moodle:Javascript 错误阻止 SCORM 包加载?

javascript - 如何在较新版本的 free-jqgrid 中重置搜索工具栏和搜索过滤器?

javascript - 如何在for循环中组织promise并在javascript中的函数之间传递参数?

javascript - ajax数据显示在10行的表格中

javascript - Mapbox featureLayer不会显示

javascript - jQuery - 基于复选框禁用 href - 脚本位置?

javascript - 需要从表的 TD 添加/删除类

javascript 旋转器/无 jQuery

javascript - Tab 键点击特定 td 后插入新的 html 行

jquery - CSS 混合模式将两个背景图像相乘替换为 jQuery